重新单击后取消选择 JCheckBox
unselect JCheckBox once re-clicked
我尝试了 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 是复选框的 default/innate 行为。您不必为此做任何特殊的事情,您当然不必(或不想)在侦听器中更改其选择状态。例如:
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();
}
});
}
}
我尝试了 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 是复选框的 default/innate 行为。您不必为此做任何特殊的事情,您当然不必(或不想)在侦听器中更改其选择状态。例如:
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();
}
});
}
}