Java如何根据另一个复选框是否已被选中来启用和禁用复选框

标签 java swing checkbox

我想要做的是锁定一个复选框,直到至少选择一个复选框。

这就是我所拥有的。

    JCheckBox cbox1 = new JCheckBox("box1");
    cbox1.setBounds(5, 0, 61, 34); // Bounds are just for example purposes 
    contentPane.add(cbox1);

    JCheckBox cbox2 = new JCheckBox("box2");
    cbox2.setBounds(5, 0, 61, 34);  // Bounds are just for example purposes 
    contentPane.add(cbox2);


    JCheckBox cbox3 = new JCheckBox("box3");
    cbox3.setBounds(5, 0, 61, 34);  // Bounds are just for example purposes 
    contentPane.add(cbox3);
    cbox3.setEnabled(false);

    JCheckBox cbox4 = new JCheckBox("box4");
    cbox4.setBounds(5, 0, 61, 34);  // Bounds are just for example purposes 
    contentPane.add(cbox4);
    cbox4.setEnabled(false);

基本上,如果单击了框 1 或 2,我只希望框 3 和框 4 可以单击。

我尝试过这个:

    if(cbox1.isSelected()||cbox2.isSelected()){
        cbox3.setEnabled(true);
        cbox4.setEnabled(true);
    }

但这不起作用。有人可以帮助解释为什么它不起作用并向我展示一种不同的方法吗?

顺便说一句,我尝试了这个,但也不起作用

    JCheckBox cbox4 = new JCheckBox("box4");
    cbox4.setBounds(5, 0, 61, 34);  // Bounds are just for example purposes 
    contentPane.add(cbox4);
    cbox4.setEnabled(cbox1.isSelected());

提前致谢:)

最佳答案

这是启用或禁用复选框的 super 基本方法。它非常简单,您所需要做的就是声明一个 ActionListener。在 Action 监听器中,您可以启用或禁用每个选择的复选框。就像我说的,这是非常基本的,不考虑二次点击或类似性质的事情。然而,它会从禁用这些框开始,然后根据您的规范启用它们。

public Combos() {
    super("ComboBox Example");
    setSize(800, 800);
    setLocationRelativeTo(null);
    add(configureBoxes());
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    boxThree.setEnabled(false);
    boxFour.setEnabled(false);

      ActionListener al = (ActionEvent e) -> {
        if (e.getSource() == boxTwo || e.getSource() == boxOne) {
            if (boxThree.isEnabled() && boxFour.isEnabled()) {
                boxThree.setEnabled(false);
                boxFour.setEnabled(false);
            } else {
                boxThree.setEnabled(true);
                boxFour.setEnabled(true);
            }
        }
    };

    boxOne.addActionListener(al);
    boxTwo.addActionListener(al);
}

如上所述,您将需要自定义此代码来管理不同的事件,例如取消选择框或选择辅助框,但这应该足以让您继续。

http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html

https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

关于Java如何根据另一个复选框是否已被选中来启用和禁用复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765616/

相关文章:

jquery - jstree:如何获取节点的未确定状态的id

css - Rails 动画切换开关

php - 使用 implode 函数在表格的一列中插入多个复选框

java - setActivity 时出现 NullPointerException

java - 无法使用 Synth 更改 ScrollBar 的颜色

java - 具有自己的对象的组合框

java - JFormattedTextField 格式化百分比数字?

java - 从 int 获取工作日

java - PyBee VOC 中的随机数

java - 如何获取ManyToMany关联中表的分页结果