swing problem z rozpoznaniem źródła

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");
	}

}
0
ksz93 napisał(a):
  if (source == button) 

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

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());
  1. 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());
  1. To samo tyczy się MouseListenera.

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