java - 重新单击后取消选择 JCheckBox

标签 java swing jcheckbox

我尝试了 StackExchange 上发布的许多其他解决方案,但当我再次单击 JCheckBox [在选择它之后]时,我无法取消选择它。

我已经尝试了以下操作,即使重新单击它也只会保持单击状态:

checkbox2.setSelected(false);
    // check state
    //if (checkbox2.isSelected()) {
        // do something...
        checkbox2.addActionListener(new ActionListener() {

               @Override
               public void actionPerformed(ActionEvent event) {
        // return str;
                    //checkbox = (JCheckBox) event.getSource();
                    if (checkbox2.isSelected()) {
                         checkbox2.setSelected(false);
                        experimentalSelection = "ML";
             System.out.println(experimentalSelection);
                    }

                   }
                  });

我假设如果我添加了 checkbox2.setSelected(false); 那么它会取消选中它是否已被选中然后单击。

最佳答案

您描述的行为 - 当用户单击已选择的 JCheckBox 时取消选择 JCheckBox 是复选框的默认/固有行为。您无需执行任何特殊操作即可发生这种情况,并且您当然不必(或想要)在监听器中更改其选择状态。例如:

import java.awt.Dimension;
import java.awt.event.ItemEvent;

import javax.swing.*;

public class GuiFun extends JPanel {
    private JCheckBox checkbox = new JCheckBox("Foo");

    public GuiFun() {
        setPreferredSize(new Dimension(300, 150));
        add(checkbox);
        checkbox.setSelected(false);
        checkbox.addItemListener(l -> {
            if (l.getStateChange() == ItemEvent.SELECTED) {
                System.out.println("CheckBox SELECTED");
            } else {
                System.out.println("CheckBox UNSELECTED");
            }
        });
    }

    private static void createAndShowGui() {
        GuiFun mainPanel = new GuiFun();

        JFrame frame = new JFrame("Gui Fun");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }

}

关于java - 重新单击后取消选择 JCheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150965/

相关文章:

java - 根据类型检索随机值的方法

java - 有哪些使用 Spring 和 Hibernate 的优秀示例应用程序?

java - 颜色引用不好?

java - GridBagConstraints ipad 锁定大小

java - JCheckBox 在运行时不会取消选择

java - OnGenericMotionListener 似乎不起作用

java - 用于数据传输对象 (DTO) 投影的 Hibernate 二级缓存

java - 用于多个箭头键按下的 KeyBinding

java - 如何增加 JRadioButtons 和 JCheckBoxes 的大小?

java - 调整java swing中复选框之间的间距