gpt4 book ai didi

java - 在下一个 JOptionPane 出现之前,JOptionPane 不会消失

转载 作者:行者123 更新时间:2023-11-29 09:28:37 28 4
gpt4 key购买 nike

我有一个显示来自 JOptionPane 的确认消息的过程。此过程从 JMenuItem 的 Actionlistener 内的 SwingUtilities.invokeLater(runnable) 调用。 runnable 的代码是这样的:

SwingUtilities.invokeLater(new Runnable(){
public void run(){
MyClass c=new MyClass(file)
try {
c.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
this.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

在MyClass中有这个方法:

private boolean userInput(){
String message="yes or no?";
JCheckBox checkbox = new JCheckBox("Do this for all.");
Object[] params={message,checkbox};
int n=JOptionPane.showConfirmDialog(null,params,"message",JOptionPane.YES_NO_OPTION);
boolean answer=(n==JOptionPane.YES_OPTION)?true:false;
if(checkbox.isSelected()){
nextQ=false;
nextA=answer;
}
return answer;
}

被多次调用。当显示 JOptionPane 消息时,我单击它的按钮(是/否),但在显示下一条消息之前消息不会消失。可能是什么问题?这与方法 invokeLater 有关系吗?

最佳答案

我找到了解决这个问题的方法。我必须在 SwingUrtilities.invokeLater 方法中创建一个新线程。这是新代码:

SwingUtilities.invokeLater(new Runnable(){
public void run(){
Thread t=new Thread(new Runnable(){
MyClass c=new MyClass(file)
public void run(){
c.start();
}
});
t.start();
}
});

关于java - 在下一个 JOptionPane 出现之前,JOptionPane 不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182472/

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