将控制从应用程序带到java框架

时间:2016-04-25 04:36:26

标签: java memory process kill

我使用java程序在arduino板和临时文件之间进行通信。沟通顺利。我使用用户界面来启动通信,其中我有一个名为

的按钮
  

连接   关闭并最小化

当用户单击连接按钮代码时,将检查组合框中的值,并相应地打开临时文件。

单击连接按钮后,控件将移至临时应用程序。完成我的工作后,我尝试关闭划痕。我的临时应用程序按预期关闭但控件没有返回到用户界面,因为我无法关闭应用程序并且我强行关闭它。在输出屏幕中,我看不到构建成功,而是让我的构建停止。这是我的过程完美的工作,直到我给连接,但一旦按下按钮它被挂在一些地方。

我尝试将其作为jar文件并在另一台机器上运行,此时我在任务管理器中使用结束任务来关闭应用程序。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

if("Disconnect".equals(jButton1.getText()))
{
    System.exit(0);
}

if(jComboBox2.getSelectedItem()==null)
{
    System.out.println("Select one port");
}
else
{           
    Runtime r = Runtime.getRuntime();

    try {
        //this.hide();
        //p = r.exec("C:\\Program Files\\Scratch 2\\Scratch 2.exe     C:\\Users\\Admin\\Desktop\\fwdbckpwm12.sb2");

        p = Runtime.getRuntime().exec("C:\\Program Files\\Scratch 2\\Scratch   2.exe C:\\Users\\Admin\\Desktop\\scratch files new.sb2");

        //Runtime.getRuntime().exec("taskkill /F /IM <p>.exe");            
        //p.destroy();
        //r.exec("C:\\Windows\\notepad.exe C:\\Windows\\ss.txt");
        //this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        A4S a4sObj = new A4S(new String[] {jComboBox2.getSelectedItem().toString()});  //defaultline

        //A4S a4sObj = new A4S(new String[]{"COM16"});  //addedline
        //r.gc();
        //this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    } catch (IOException ex) {
        Logger.getLogger(serialportselection.class.getName()).log(Level.SEVERE, null, ex);
    } 
    finally{
        //p.destroy();
        //System.gc(); 
   // }

}            

这是我试过的代码。但似乎都没有效果。

2 个答案:

答案 0 :(得分:0)

据我所知,您使用SWING创建UI。 你可以设置

 yourFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);

为你的框架。这必须有所帮助。

答案 1 :(得分:0)

  1. 将所有与流程相关的工作移至单独的主题中。
  2. 使用waitFor方法识别流程结束 - 然后您可以自由使用 退出你的应用。