2016-07-24 53 views
0

當我創建一個.jar文件並且程序只使用主線程時,一切正常,但是當我需要併發並添加自己的線程.jar時文件沒有打開或運行一個我雙擊它。如果它有多個線程,就不能使用.jar文件

下面是一個例子:

class idk { 
    public static void main(String args[]) throws Exception { 
     new Thread(new Runnable() { 
      public void run() { 
       try { 
        JFrame j = new JFrame(); 
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        j.setVisible(true); 

        j.getContentPane().setPreferredSize(new Dimension(800, 500); 
        j.pack(); 
        j.setLocationRelativeTo(null); 
       } catch(Exception e1) {} 
      } 
     }).start(); 
    } 
} 

當編譯成.jar文件上面的代碼不會由於某種原因執行。 但是,如果我只是使用相同的代碼,但遺漏了線程它工作得很好。

+0

您是否準確複製粘貼了您的代碼?它有一個語法錯誤,無法編譯。你如何創建jar文件(IDE/jar util中的某些構建系統/導出)? –

回答

0

您只能使用Swing的事件分派線程(EDT)的一個線程與UI組件進行交互。使用此代碼創建你的主窗口:

SwingUtilities.invokeLater(new Runnable() { ... }); 

併發的應用程序應該使用SwingWorker對象和publish方法,如果他們需要與UI交互來完成。

創建自己的Thread並從這些線程創建或使用Swing組件會導致您的悲傷。

請參閱

相關問題