如何从程序中关闭另一个具有JFrame.EXIT_ON_CLOSE的swing程序而不终止main(调用)程序

时间:2014-02-15 17:08:47

标签: java swing jframe

我正在使用swing创建一个可以编译和运行用户程序的IDE。如果用户编写swing程序并运行该程序中有frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);的程序,则表示已成功运行。但是当用户关闭程序时,我的IDE也会关闭。如何摆脱这一点。我希望我的IDE不会关闭。

当用户关闭程序时,我的swing应用程序是否还有任何程序运行?

例如:在Netbeans IDE中,当我们运行swing程序并关闭该程序时,Netbeans IDE不会关闭。

1 个答案:

答案 0 :(得分:2)

您可以将其关闭操作更改为其他内容,例如DISPOSE_ON_CLOSE或DO_NOTHING_ON_CLOSE。

即,

OtherGUI otherGui = new OtherGui();
otherGui.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
otherGui.setVisible(true);

顺便说一句,您可能想要告诉我们您当前运行其他程序的设计,因为这让我担心可能出现的问题。你究竟在做什么?


修改
你说:

  

实际上我通过反射运行该程序,我没有权利更改用户程序,所以在这种情况下该怎么办?

  

我正在使用swing创建一个可以编译和运行用户程序的IDE。如果用户编写swing程序并运行具有frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)的程序;在该程序内部,它成功运行。但是当用户关闭程序时,我的IDE也会关闭。如何摆脱这一点。我希望我的IDE不会关闭。

我没有这方面的经验,但我怀疑你会想要在自己的JVM中创建每个已启动的GUI,你不会用反射(我不认为),而是通过创建一个新进程使用ProcessBuilder,注意适当地处理所有流,并在您的过程中直接调用Java,启动该程序。