假设我有一组代码来显示JFrame,JPanel和JLabel。如果我将它作为脚本文件运行,这工作正常。它只是显示一个小窗口,一个标签,上面写着“标签”就像你所期望的:Matlab可以使用javax.swing元素来部署文件吗?
frame = javax.swing.JFrame('Test');
panel = javax.swing.JPanel();
label = javax.swing.JLabel('A label');
panel.add(label);
frame.add(panel);
frame.setDefaultCloseOperation(javax.swing.JFrame.HIDE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
问题是当我编译这个作为与deploytool中的exe文件。它会编译,我可以运行该程序,但框架会显示约3秒左右,然后消失。如果我用!main.exe在Matlab内部运行,窗口消失时没有错误消息(我不想说因为没有错误消息而崩溃)。如果我从Windows命令提示符运行可执行文件(相同的结果 - 显示几秒钟然后崩溃),也没有一个。
任何想法发生了什么?我可以编译其他文件就好了。问题是因为我包含了javax.swing元素吗?
非常感谢您的帮助。
UPDATE
这感觉就像一个非常便宜破解,但有一个while循环,只要是的JFrame开放,即暂停Matlab的做的伎俩。所以现在的问题是,有没有更好的方法来做到这一点?
您是否检查过是否有任何错误记录到[Java控制台](http://www.java.com/en/download/help/javaconsole.xml)?或者如果您遇到崩溃转储 - 无论那些在Windows上显示的地方。 – horchler
如果你在最后做了'暂停(30)',或者还创建了一个常规的Matlab图形,会发生什么?我对编译器/ deploytool不熟悉,但它让我感到Matlab的一面可能已经到达了程序的终点,拆除了JVM并退出,因为它根本没有意识到它有任何东西需要等待(因为你已经背后,直接创建Swing对象)。 – Notlikethat
当GUI关闭时,exe是否仍在运行?我认为你部署了m函数,因此JVM关闭,而通过matlab GUI,JVM保持打开状态。 – Daniel