这是一个我正在努力学习的实验室,代码正在制作一个刽子手游戏,当“大脑”程序说游戏结束时,所有的字母按钮都应该被禁用。 / 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的循环中创建的,它包含所有其他面板。有没有办法在游戏结束时全部引用它们或禁用它们? 如果没有,我应该如何更改我的代码,以便可以这样做?
答案 0 :(得分:8)
如果您将按钮放在Collection
中,则可以迭代它们并以此方式禁用它们。即,
for (JButton b : myButtons) {
b.setEnabled(false)
}
如果没有,你有26个禁用语句要写。
答案 1 :(得分:2)
请参阅JButton的setEnabled()方法。你可以:
ArrayList
,然后迭代它并逐个禁用随意选择你最喜欢的那个。
答案 2 :(得分:0)
如何通过调用getComponents来获取根面板的子节点并递归迭代它们并找到JButton并在找到它们时禁用它们?