有没有办法用方法禁用所有按钮?

use*_*030 1 java swing

这是我正在努力学习的实验室,代码正在制作一个刽子手游戏,当"大脑"程序说游戏结束时,所有字母按钮都应该被​​禁用.

相关代码部分:

按钮:

class ActionButton extends JButton implements ActionListener{
    private String name;
    private char t;
    public ActionButton(String s){
        super(s);
        name = s;
        t = name.charAt(0);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        ido.newLetter(t);
        this.setEnabled(false);
        LovesMePanel.this.update();
    }

}
Run Code Online (Sandbox Code Playgroud)

更新方法:

public void update(){
    answers = ido.getAnswer();
    flower.setTriesLeft(ido.getTriesLeft());
    progress.setText(answers);      
    if(ido.gameOver()){
// This is where I need to deactivate the buttons       
        if(ido.hasWon()){

        }
    }
    else if(triesLeft == 0){

    }

}
Run Code Online (Sandbox Code Playgroud)

这些按钮都是在LoveMePanel的循环中创建的,它包含所有其他面板.有没有办法在游戏结束时全部引用它们或禁用它们?如果没有,我应该如何更改我的代码,以便可以这样做?

Nic*_*ick 8

如果你把按钮放在一个Collection,你可以迭代它们并一直禁用它们.也就是说,

for (JButton b : myButtons) {
    b.setEnabled(false)
}
Run Code Online (Sandbox Code Playgroud)

如果没有,您有26个禁用语句要写.