当我选择JCheckBox
时,它会自动取消选择...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Math extends JFrame
{
private JPanel panel2 = new JPanel();
private JCheckBox cb = new JCheckBox("Record Answers");
//Constructor
public Math()
{
setSize(300,300);
setTitle("Math");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
panel2.add(cb);
//add ActionListners
cb.addItemListener(new listenerCb());
add(panel2, BorderLayout.SOUTH);
setVisible(true);
}
//itemListner for cb
public class listenerCb implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(cb.isSelected())
{
JOptionPane.showMessageDialog(null,"Example");
}
}
}
public static void main(String[] args)
{
new Math();
}
}
每当我尝试选择cb
时,它会弹出JOPtionPane
并取消选择。
如果我删除JOptionPane
,它就可以正常工作。
答案 0 :(得分:2)
我认为问题在于选项窗格正在接收一些事件,因为它现在具有焦点。
一种解决方案是包装代码以在SwingUtilities.invokeLater(...)
中显示JOptionPane。
这将允许在显示选项窗格之前将复选标记重新绘制为新状态。
public class listenerCb implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(cb.isSelected())
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JOptionPane.showMessageDialog(null,"Example");
}
});
}
}
}