我正在使用 Netbeans 制作一个与 arduino Uno 对话的 jfx 应用程序。我已经在我的 64 位 OS X 机器上安装了 RXTX,它似乎可以工作。
在应用程序的主 Controller 中的initialize()方法中,我这样做:
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("/dev/tty.usbmodem1d1111");
this.serialPort = (SerialPort) portId.open("Box App", 1000);
// this.serialPort.close();
这很棒,只是当我关闭应用程序的唯一窗口而不调用该 serialPort.close()
函数时,app/jvm 会在后台保持运行。我尝试重写 Controller 的 dispose() 方法并添加 Platform.exit()
。
Platform.setImplicitExit(true);
显式设置为 true。
不知道我还能做什么。如果用户在串行 I/O 完成之前关闭应用程序,显然它就会挂起。如何在应用程序窗口关闭时强制关闭端口?
最佳答案
这段代码:
topFrame.addWindowListener(new WindowListener()
{
public void windowClosing(WindowEvent e)
{
emsClient.close();
}
public void windowOpened(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
});`
将帮助您附加事件来关闭窗口
关于如果串行端口保持打开状态,Java 应用程序将不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121284/