Problem - EventDispatchThread.pumpEvents (Unknown Source)

0

Witam probuje zrobic okno z przyciskiem po ktorego kliknieciu tlo zmienialoby sie na czerwono (tlo okna nie przycisku). Mam 2 klasy jak na razie:
MyFrame

package pl.javastart.first;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class MyFrame extends JFrame {
	public MyFrame () {
		setTitle("Test");
		setSize(600,400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		JButton redButton = new JButton("Czerwony");
		
		JPanel buttonPanel = new JPanel();	
		buttonPanel.add(redButton);
		add(buttonPanel);
		
		ColorAction redAction = new ColorAction(Color.RED);
		redButton.addActionListener(redAction);
	}
	
	private class ColorAction implements ActionListener {
		private Color backgroundColor;
		private JPanel buttonPanel;
			
		public ColorAction (Color color) {
				backgroundColor = color;
		}
			
		public void actionPerformed (ActionEvent event) {
			buttonPanel.setBackground(backgroundColor);
		}
	}
}

Test

package pl.javastart.first;

import java.awt.EventQueue;

public class Test {
	public static void main (String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				MyFrame frame = new MyFrame();
			}
		});
	}
}

Po skompilowaniu okno i cala reszta sie uruchamia. Jednak gdy wcisne przycisk dostaje:

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

w czym problem?

0

W tym, że wywołujesz metodę (setBackground) na rzecz obiektu, który nie istnieje. W tym miejscu

JPanel buttonPanel = new JPanel();

tworzysz zmienną lokalną o nazwie buttonPanel, a w tym miejscu

buttonPanel.setBackground(backgroundColor);

odwołujesz się do pola w klasie, które ma taką samą nazwę.
Powinno być

buttonPanel = new JPanel();
0

Racja, zle przepisalem kod. Dzieki wielkie

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