Java 单击JOptionPane时重新运行swing JFrame

Java 单击JOptionPane时重新运行swing JFrame,java,swing,jframe,joptionpane,Java,Swing,Jframe,Joptionpane,我有一个swing JFrame,在代码的某个地方,我需要显示一个JOptionPane供用户选择: 如果是-我需要再次运行ht JFrame并退出现有框架 如果没有-这个问题解决了,我只需要退出 以下是JFrame代码: public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try {

我有一个swing JFrame,在代码的某个地方,我需要显示一个JOptionPane供用户选择: 如果是-我需要再次运行ht JFrame并退出现有框架 如果没有-这个问题解决了,我只需要退出

以下是JFrame代码:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainFrame frame = new MainFrame();
                frame.setVisible(true);

            } catch (Exception e) {
                e.printStackTrace();
            }           
        }

    });

}
下面是我创建的JOptionPane代码:

int ok = JOptionPane.showConfirmDialog(null, "would you like to enable USB in your device?", "USB", JOptionPane.YES_NO_OPTION);

        if (ok==JOptionPane.YES_OPTION){
            Thread t = new Thread(){

                public void run(){
                    String[] args = { };
                    MainFrame f = new MainFrame();
                    f.main(args);
                }

            }.start();
        }

        else if(ok==JOptionPane.NO_OPTION){
            System.exit(ok);
        }
我创建了线程,它正在打开另一个JFrame,但没有关闭现有的JFrame


感谢您的帮助:)

如果框架可见,则frame.dispose()frame=null;之后,frame=new。。。。但是这意味着,框架需要在一个更大的范围内,不要在对象上调用静态方法,而是尝试养成在类本身
MainFrame.main(args)
上调用这些方法的习惯,或者使用非静态方法
public void main(String[]args)
1)在单个
JFrame
中使用a,如中所示。2) 为了更快地获得更好的帮助,可以发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。3)
t.start()应该被安排在事件调度线程上发生。@MrTsjolder我将调用更改为“MainFrame.main(args)”,因为它是静态的,但这并不能解决问题,谢谢你:)我通过中断当前线程
Thread.currentThread().interrupt()解决了问题
结束JOptionPane消息并再次返回大型机。。谢谢你的帮助。。