Problem z metodą

0

Witam, mam problem z metodą makeButton(), ponieważ dodaje tak jak chcę 3 buttons, jednak kolor zmienia się tylko na taki, jaki ma podane ostatnie wywołanie.
Wrzucam kod, aby pokazać o co mi chodzi

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

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

}

class Frame extends JFrame{
	private JPanel buttonPanel;
	private Color background;
	
	public Frame(){
		
		setTitle("XD");
		setBounds(100,100,500,250);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		buttonPanel=new JPanel();
		makeButton("yellow",Color.YELLOW);
		makeButton("red",Color.RED);
		makeButton("green", Color.GREEN);
		add(buttonPanel);
		setVisible(true);
		
	}
	
	public void makeButton(String name, Color background) 
	{
		
		JButton button=new JButton(name);
		buttonPanel.add(button);
		ColorAction action=new ColorAction(background);
		button.addActionListener(action);
		
	}
	
	

	
	private class ColorAction implements ActionListener{

		public ColorAction(Color c) {
			background=c;
		}

		@Override
		public void actionPerformed(ActionEvent event) {
			buttonPanel.setBackground(background);
		}
	}
}
1

Przenieś linijkę private Color background; z klasy Frame do klasy ColorAction i tyle.

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