0

我正在使用 Netbeans 制作一个与 arduino Uno 对话的 jfx 应用程序。我已经在我的 64 位 OS X 机器上安装了 RXTX,它似乎工作正常。

在 initialize() 方法的应用程序的主控制器中,我这样做:

 CommPortIdentifier  portId = CommPortIdentifier.getPortIdentifier("/dev/tty.usbmodem1d1111");
 this.serialPort = (SerialPort) portId.open("Box App", 1000);
 // this.serialPort.close(); 

这很好,除了当我关闭应用程序的唯一窗口而不调用该serialPort.close()函数时,app/jvm 保持在后台运行。我尝试覆盖控制器的 dispose() 方法并添加Platform.exit(). Platform.setImplicitExit(true);明确地设置为真。

不知道我还能做什么。如果用户在串行 I/O 完成之前关闭应用程序,显然它只会挂起。关闭应用程序窗口时如何强制关闭端口?

4

1 回答 1

1

这段代码:

   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) {
            }
        });`

将帮助您将事件附加到关闭窗口

于 2013-08-08T08:33:04.610 回答