GUI使用StartOnMainThread锁定自身

时间:2012-11-25 20:09:18

标签: java macos swing

我正在使用JavaApplicationBundle为我的jar文件设置图标,现在我正在尝试从Dock中删除我的程序。

我已将LSUIElement设置为1,但直到我在Info.plist的Java部分添加StartOnMainThread指令后才能生效。

但是 - 然后出现问题 - GUI被锁定 - 就像程序正在执行无限循环或其他东西一样。我已将main()更改为:

public static void main(String[] args) {

        Thread queryThread = new Thread() {
              public void run() {
                new MainWindow();
              }
            };
            queryThread.start();
        }

但是我看不到JDialog - 即使JavaApplicationBundle进程正在运行它也不会出现(因为现在这是后台应用程序 - 我可能会缺少一些步骤来启动对话框吗?)

什么可能导致这个问题?有没有人在没有坐在Dock中的情况下运行java程序的简单应用程序包 - 我搜索了互联网,但我的搜索结果中没有出现任何内容?

由于

修改

在阅读评论后,我尝试过我已尝试过的内容,但我忘记了这一点:

public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable(){
      public void run() {
                new MainWindow();
      }
    });
}

在这种情况下,应用程序正在运行 - 但是没有显示GUI。当我查看控制台消息时,我看到其中几个:

*** -[NSConditionLock unlock]: lock (<NSCOnditionLock: 0x1347a0> '(null)') unlocked when not locked
*** Break on _NSLockError() to debug.

0 个答案:

没有答案