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