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