Java 如何启动一个新窗口(自身的副本),然后独立关闭每个窗口?在爪哇

Java 如何启动一个新窗口(自身的副本),然后独立关闭每个窗口?在爪哇,java,swing,Java,Swing,我希望我的程序能够启动自己的另一个副本,这个 new Thread(){ public void run() { main.main(new String[]{}); } }.start(); 这就是我到目前为止所拥有的。它是有效的。(main.java中的main类启动程序的其余部分,并在整个常规操作中充当后端) 现在,当我按下任何一个窗口上的关闭按钮时,它会将它们全部关闭。理想的效果是只关闭一个 我用应用程序尝试了各种方法。ExitListe

我希望我的程序能够启动自己的另一个副本,这个

new Thread(){
     public void run() {
             main.main(new String[]{});
     }
}.start();
这就是我到目前为止所拥有的。它是有效的。(main.java中的main类启动程序的其余部分,并在整个常规操作中充当后端)


现在,当我按下任何一个窗口上的关闭按钮时,它会将它们全部关闭。理想的效果是只关闭一个

我用
应用程序尝试了各种方法。ExitListener
毫无乐趣,我还尝试用另一种方法打开新窗口:

main s = new main();
s.main(new String[]{});
我在考虑获取文件路径,然后简单地让它
Runtime.getRuntime().exec()从那里开始。在这次尝试中,我能够获得正确的路径,但无法获得.jar文件的名称

现在,当我按下任何一个窗口上的关闭按钮时,它都会关闭所有窗口

听起来您正在使用:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这应该是:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
现在,当我按下任何一个窗口上的关闭按钮时,它都会关闭所有窗口

听起来您正在使用:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这应该是:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

按照您的建议,我在实现它时遇到了一些问题,但根据您所说的,我现在使用的是getFrame().dispose();在一个ExitListener中,我已经准备好了其他东西。按照你的建议,我在实现它时遇到了一些问题,但是根据你所说的,我现在使用的是getFrame().dispose();在一个ExitListener中,我已经准备好了其他东西。