gpt4 book ai didi

java - 在 ItemListener 中显示消息对话框会阻止选择复选框

转载 作者:行者123 更新时间:2023-11-30 02:04:57 27 4
gpt4 key购买 nike

我注意到,在选择复选框时在 ItemListener 中使用消息框时,它将阻止该复选框被选中。这是演示该问题的完整示例:

import javax.swing.*;

import static java.awt.event.ItemEvent.SELECTED;
import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
import static javax.swing.JOptionPane.showMessageDialog;

public class ExampleFrame extends JFrame
{
private ExampleFrame()
{
JCheckBox jCheckBox = new JCheckBox("Fail");
add(jCheckBox);

jCheckBox.addItemListener(itemEvent ->
{
int stateChange = itemEvent.getStateChange();
if (stateChange == SELECTED)
{
showMessageDialog(rootPane,
"The checkbox selection did not work.",
"SSCCE",
INFORMATION_MESSAGE);
}
});
}

public static void main(String[] arguments)
{
ExampleFrame exampleFrame = new ExampleFrame();
exampleFrame.pack();
exampleFrame.setVisible(true);
}
}

修复此代码以使其显示消息框并且不会中断选择复选框的最佳实践是什么?

我成功地使用附加线程来执行监听器,将其延迟例如100 毫秒,然后在 EDT 再次执行消息框。不过,这似乎太老套了,不能被视为正确的解决方案。

This问题是相关的,但没有得到像样的答案。

最佳答案

使用 SwingUtilities.invokeLater 包围模式对话框

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
showMessageDialog(rootPane,
"The checkbox selection did not work.",
"SSCCE",
INFORMATION_MESSAGE);
}
});

关于java - 在 ItemListener 中显示消息对话框会阻止选择复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51640097/

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