Can someone explain to me why I lost the selection ( setSelected() ) for the JCheckBox when I put the JOptionPane in the ItemListener ? This is mistake?
Curiously, if this process is delayed using invokeLater() , setSelected() works correctly, as I expected.


from SSCCE
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ComponentEventDemo extends JPanel implements ComponentListener, ItemListener { private static final long serialVersionUID = 1L; private JFrame frame; private JTextArea display; private String newline = "\n"; private JTextField field1; public ComponentEventDemo() { super(new BorderLayout()); display = new JTextArea(10, 25); display.setEditable(false); JPanel panel = new JPanel(new GridLayout(0, 2)); field1 = new JTextField(); field1.setDisabledTextColor(Color.red); JCheckBox checkbox = new JCheckBox("Label visible", true); checkbox.addItemListener(this); panel.add(checkbox); panel.add(field1); panel.addComponentListener(this); JScrollPane scrollPane = new JScrollPane(display); frame = new JFrame("ComponentEventDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(scrollPane, BorderLayout.CENTER); frame.add(panel, BorderLayout.SOUTH); frame.addComponentListener(this); frame.setLocation(200, 200); frame.pack(); frame.setVisible(true); } public void itemStateChanged(ItemEvent evt) { System.out.println("STATE CHANGED!"); if (evt.getStateChange() == ItemEvent.SELECTED) {
source share