java为多个JButton提供相同的actionListener
我已经写了一个2x2x2的rubiks立方体解算器,我想让用户进入他们的立方体的体验更好,目前他们输入分配给立方体颜色的数字。例如,0可以表示白色,1可以表示黄色等。我一直在开发一个GUI,它是一个由按钮组成的2d立方体,当单击按钮时,它会在一系列颜色上循环。这是我到目前为止所拥有的,但我无法让actionListener应用于所有按钮
public static void main(String[] args) {
final int WINDOW_HEIGHT = 500;
final int WINDOW_WIDTH = 700;
//create a window
window.setTitle("First Window");
window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.setResizable(false);
allButtons();
}
private static void allButtons(){
panel.setLayout(null);
window.add(panel);
final JButton button[]=new JButton[23];
for(int i=0;i<button.length;i++){
button[i] = new JButton();
}
panel.add(button[0]);
button[0].setBounds(30, 30, 60, 60);
final Color[] ColorArray = {Color.WHITE, Color.ORANGE,Color.GREEN,Color.RED,Color.BLUE,Color.YELLOW};
button[0].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
final int stickerNum = 24;
if(stickerNum <= 3){
for(Color i : ColorArray){
button[0].setBackground(i);
cube[Side][0] = 0;
}
}
}
});
}
# 1 楼答案
只需将ActionListener实例分配给一个变量,并将其添加到循环中的JButtons
# 2 楼答案
您只需创建一个ButtonListener类,如下所示,它存储索引。然后,只需向每个按钮添加侦听器的新实例