Java,如果勾选多个复选框?

标签 java swing jcheckbox

我正在创建一个简单的程序,用户可以在其中勾选不同颜色的复选框。如果勾选了几个框,那么它应该显示颜色的混合效果。例如,勾选蓝色和黄色,然后标签显示绿色。 我遇到了 3 个问题。

  1. 检查多种颜色是否像上面的示例那样混合。
  2. 取消选中复选框不会更改标签。
  3. 当所有这些都取消选中时,它应该返回“未选择颜色”。
<小时/>
class LabDemo extends JFrame implements ActionListener {
    JLabel displayColor = new JLabel("No chosen color");
    JCheckBox blue = new JCheckBox("Blue");
    JCheckBox yellow = new JCheckBox("Yellow");
    JCheckBox red = new JCheckBox("Red");
    JPanel panel = new JPanel();

    public LabDemo() {
        panel.setLayout(new GridLayout(4,1));
        blue.addActionListener(this);
        yellow.addActionListener(this);
        red.addActionListener(this);
        this.add(panel);
        displayColor.setBackground(Color.WHITE);
        panel.add(blue); panel.add(yellow); panel.add(red); panel.add(displayColor);
        setSize(300,300);
        setLocation(100,100);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if (blue.isSelected()) {
            displayColor.setText("Blue");
            panel.setBackground(Color.BLUE);
        }
        else if (yellow.isSelected()) {
            displayColor.setText("Yellow");
            panel.setBackground(Color.YELLOW);
        }
        else if (red.isSelected()) {
            displayColor.setText("Red");
            panel.setBackground(Color.RED);
        }
        else if (blue.isSelected() && yellow.isSelected()) {
            displayColor.setText("Blue + Yellow = Green");
            panel.setBackground(Color.GREEN);
        }
    }
}

最佳答案

您永远不会进入最后一种情况(蓝色和黄色),因为您处于 if-else 中,并且上述语句之一将在该语句(单独的蓝色语句之前)被评估为 true , 在这种情况下)。如果只是这四种情况,则应将“蓝色和黄色”的情况放在第一个检查的位置。

关于Java,如果勾选多个复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487506/

相关文章:

延迟后每个项目的java jtree重新显示工具提示

java - 跟踪每次选中和取消选中复选框的时间

java - 已排序的 JTable rowAtPoint(Point) 返回值

java - 在我的 JTable 中触发更改时,最后一个 JCheckBox 保持切换状态

java - Ubuntu 中的良好 Java 实践

java - 是否有人在 IntelliJ 中成功混合了 scala 和 java 文件

Java:方法中的按值传递引用

java - 无法使用 PowerMock 模拟 java.lang.System#exit(int) 方法

java - Java swing 中单击的 JButton 的返回索引

java - 边框和流程布局