gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:58 26 4
gpt4 key购买 nike

我尝试了 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com