gpt4 book ai didi

java - 为多个按钮提供相同的actionListener

转载 作者:行者123 更新时间:2023-12-01 09:34:08 30 4
gpt4 key购买 nike

我编写了一个 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;
}
}
}
});
}

最佳答案

只需将 ActionListener 实例分配给一个变量,然后将其添加到循环中的 JButton。

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

ActionListener actionListener = 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;
}
}
}
};

for(int i=0;i<button.length;i++){
button[i].addActionListener( actionListener);
}
}

关于java - 为多个按钮提供相同的actionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150678/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com