java - 如何在Java swing中从另一个类禁用一个类中的多个JButton?

标签 java swing user-interface jbutton disabled-control

我有这个代码片段(实际上是代码的一部分),其中在一个类中我为 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/

相关文章:

c++ - 如何动态创建与其父控件具有相同视觉样式的控件?

java - 将 24 小时制转换为 12 小时制?

java - 如何在 ListView 中使用 Android DataBinding 并仍然使用 ViewHolder 模式?

java - 从 com.symantec.itools.javax.swing 包中替换 ButtonGroupPanel

java - 重新创建 JFrame 或 JDialog 的 Windows 外观边框?

javascript - jQuery donut 插件 : Arrow doesn't show on print

java - 从Java中的多维数组获取未知数量的维度

java - Hibernate DataIntegrityViolationException 外键违规不允许删除

java - 添加横向 Jpanel

javascript - 如何在 Extjs 4.2+ 中上传前预览图像