我有这个代码片段(实际上是代码的一部分),其中在一个类中我为 26 个字母创建了所有 Jbutton。我有另一个类来跟踪时间,当时间结束或游戏结束时,我想一次性禁用所有 26 个 JButton。
这是创建 Jbutton 的代码
public class DetailsPanel extends JPanel {
public DetailsPanel() {
setLayout(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(" click here "));
JPanel letterPanel = new JPanel(new GridLayout(0, 5));
for (char alphabet = 'A'; alphabet <= 'Z'; alphabet++) {
String buttonText = String.valueOf(alphabet);
JButton letterButton = new JButton(buttonText);
letterButton.addActionListener(clickedbutton());
letterPanel.add(letterButton, BorderLayout.CENTER);
}
add(letterPanel, BorderLayout.CENTER);
}
}
在我的maincontrol类
中,我想关闭所有Jbuttons,就像
public class maincontrol {
int counter;
DetailsPanel dp;
public maincontrol(DetailsPanel dp) {
this.dp = dp;
int counter = 0;
}
public void turnoff(){
if ( counter>10){
//turn off all here//
}
}
}
最佳答案
保留对您的详细信息面板的引用。添加一个方法来禁用按钮,例如:
public class DetailsPanel extends JPanel {
private final JPanel letterPanel;
public DetailsPanel() {
setLayout(new BorderLayout());
setBorder(BorderFactory.createTitledBorder(" click here "));
letterPanel = new JPanel(new GridLayout(0, 5));
...
}
public void disableButtons() {
for (Component c : letterPanel.getComponents()) {
if (c instanceof JButton) c.setEnabled(false);
}
}
}
当您想要禁用按钮时调用它。或者更聪明一点,根据您传入的内部匝数来执行此操作:
private static final int MAX_TURNS = 10;
public void updateButtons(int turn) {
for (Component c : letterPanel.getComponents()) {
if (c instanceof JButton) c.setEnabled(turn <= MAX_TURNS);
}
}
关于java - 如何在Java swing中从另一个类禁用一个类中的多个JButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19530206/