swing problem z rozpoznaniem źródła

Odpowiedz Nowy wątek
2019-06-11 23:35
0

Bawię się ostatnio w swinga i podpinanie zdarzeń, ale jest problem z rozpoznaniem źródła, działają wszystkie funkcje poza tą z metodą getSource(), nie wiem już gdzie leży błąd. Wyrzuca mi ileś linijek błędów z czego pierwsza to:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
    button cannot be resolved to a variable

Poniżej kod:

package frame;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.awt.event.*;

public class MyFrame extends JFrame implements ActionListener, MouseListener {

    public MyFrame() {
        super("Hello World");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setBounds(300,100,600,400);

        JPanel panel = new JPanel();
        panel.setLayout(null);

        JLabel korony = new JLabel("korony czeskie");
        korony.setBounds(10,10,100,30);
        panel.add(korony);

        JTextArea fieldtxt1 = new JTextArea();
        fieldtxt1.setBounds(10,60,100,30);
        panel.add(fieldtxt1);

        JLabel zlotowki = new JLabel("złotówki");
        zlotowki.setBounds(10,110,100,30);
        panel.add(zlotowki);

        JTextArea fieldtxt2 = new JTextArea();
        fieldtxt2.setBounds(10,160,100,30);
        panel.add(fieldtxt2);

        JButton button = new JButton("konwertuj");
        button.setBounds(10,210,100,30);
        button.addActionListener(this);
        button.addMouseListener(this);
        panel.add(button);

        add(panel);

    }

    @Override
    public void actionPerformed(ActionEvent evt) {
        Object source = evt.getSource();
        if (source == button) {
            System.out.println("chuj");
        }
    }

    public void mouseClicked(MouseEvent me) {
        System.out.println("click");
    }

    public void mousePressed(MouseEvent me) {
        System.out.println("down");
    }

    public void mouseRelased(MouseEvent me) {
        System.out.println("up");
    }

    public void mouseEntered(MouseEvent me) {
        System.out.println("over");
    }

    public void mouseExited(MouseEvent me) {
        System.out.println("out");
    }

}
nie "nie działa" tylko "nie kompiluje się". A że uruchamiasz mimo tego, DODATKOWO leci wyjątek - AnyKtokolwiek 2019-06-12 00:47

Pozostało 580 znaków

2019-06-12 00:02
0
ksz93 napisał(a):
  if (source == button) 

Co to za warunek?
ps mając stacktrace exceptiona masz zazwyczaj linie błędu :)

edytowany 2x, ostatnio: kixe52, 2019-06-12 00:05

Pozostało 580 znaków

2019-06-12 08:34
0

Błąd to ty masz juz tutaj: extends JFrame implements ActionListener, MouseListener bo robisz klasę tzw człowiek orkiestra a potem próbujesz jakimiś dziwnymi metodami z tego idiotyzmu wybrnąć.

  1. Zrób anonimowego action listenera lokalnie przypisanego tylko do jednego buttona:
    button.addActionListener(evt->buttonKtorystamKlikniety());
  2. Albo jeśli ten listener jest złożony, albo klasa spuchła to zrób w ogóle osobną klasę:
    class MojListener implements ActionListener{
    ...
    //
    button.addActionListener(new MojListener());
  3. To samo tyczy się MouseListenera.

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2019-06-12 08:34

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0