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

时间:2013-04-16 17:18:23

标签: java swing

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

相关代码部分:

按钮:

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

}

更新方法:

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){

    }

}

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

3 个答案:

答案 0 :(得分:8)

如果您将按钮放在Collection中,则可以迭代它们并以此方式禁用它们。即,

for (JButton b : myButtons) {
    b.setEnabled(false)
}

如果没有,你有26个禁用语句要写。

答案 1 :(得分:2)

请参阅JButton的setEnabled()方法。你可以:

  1. 在创建按钮时将按钮添加到ArrayList,然后迭代它并逐个禁用
  2. 获取JPanel的子项,迭代它们,检查它是否是按钮并禁用它
  3. 在您的Burrons上放置一个Glass Pane来拦截传入的事件
  4. 随意选择你最喜欢的那个。

答案 2 :(得分:0)

如何通过调用getComponents来获取根面板的子节点并递归迭代它们并找到JButton并在找到它们时禁用它们?