gpt4 book ai didi

java - JCheckBox 自动取消选择

转载 作者:行者123 更新时间:2023-12-02 03:29:08 26 4
gpt4 key购买 nike

当我选择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,它就可以正常工作。

最佳答案

我认为问题在于选项 Pane 正在接收一些事件,因为它现在具有焦点。

一种解决方案是将显示 JOptionPane 的代码包装在 SwingUtilities.invokeLater(...) 中。

这将允许在显示选项 Pane 之前以新状态重新绘制复选标记。

public  class listenerCb implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(cb.isSelected())
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JOptionPane.showMessageDialog(null,"Example");
}
});
}
}
}

关于java - JCheckBox 自动取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338443/

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