Java 以编程方式关闭JOptionPane.ShowInternalOptionDialog
我目前的设计是这样的: 我有一个显示主应用程序的外部框架。当用户单击主应用程序上的按钮时,应启动一个弹出窗口。我正在使用JOptionPane.showInternalOptionDialog并将按钮对象作为选项传递。当用户单击其中一个按钮时,它应该运行某些命令,然后关闭窗口。我无法关闭显示弹出窗口的框架 我在这个论坛上发现了一个类似的问题,建议采取以下解决方法。 但是上面的解决方法关闭了我的整个gui。我只想关闭JOptionPane弹出窗口 提前感谢。有几种解决方案:Java 以编程方式关闭JOptionPane.ShowInternalOptionDialog,java,swing,joptionpane,Java,Swing,Joptionpane,我目前的设计是这样的: 我有一个显示主应用程序的外部框架。当用户单击主应用程序上的按钮时,应启动一个弹出窗口。我正在使用JOptionPane.showInternalOptionDialog并将按钮对象作为选项传递。当用户单击其中一个按钮时,它应该运行某些命令,然后关闭窗口。我无法关闭显示弹出窗口的框架 我在这个论坛上发现了一个类似的问题,建议采取以下解决方法。 但是上面的解决方法关闭了我的整个gui。我只想关闭JOptionPane弹出窗口 提前感谢。有几种解决方案: 直接创建JOptio
默认情况下,单击
作业窗格中的按钮将关闭对话框。如果您的按钮没有,那是因为您使用的是实际的组件,而不是字符串或其他对象,并且它正在调用按钮的自定义事件处理程序,而不是自己的
我建议您采用不同的方法,使用字符串而不是按钮。使用一组按钮作为输入值,当调用showInternalOptionDialog
返回时,您可以检查int索引以找出按下的内容,然后在代码中打开它。这样,您根本不必触摸作业窗格
,它会自动关闭。试试看
JOptionPane.getRootFrame().dispose();
有一次我也遇到了同样的问题。我使用一个线程来解决这个问题,该线程在X毫秒后关闭我的JOptionPane
import javax.swing.JOptionPane;
public class JOptionPaneExample {
public static void main(String[] args) {
final JOptionPane pane =new JOptionPane();
Thread t1 = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
pane.getRootFrame().dispose();
}
});
t1.start();
pane.showMessageDialog(null, "I will close after 3000 milli's", "Programmatic Auto-close JOptionPane", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
我使用JOptionPane的原因是我想要一个模态对话框。没错,我传递了字符串和Jbutton作为选项。我使用JButton对象作为选项的原因是,我不希望窗格立即关闭。我希望所有的检查都完成并结束。在处理过程中,如果有任何错误,我希望窗格保持打开状态。啊,感谢您清除这些错误。在这种情况下,我绝对建议您为此定制JDailog
JOptionPane
通常用于简单的问题回答场景。谢谢大家。看来JDialog是我应该走的路线。