2016-07-24 7 views
0

.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

UIコンポーネントとやりとりするために、1つのスレッドSwingのイベントディスパッチスレッド(EDT)のみを使用する必要があります。このコードを使用して、メインウィンドウを作成します:アプリケーション内の

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

同時実行は、彼らがUIと対話する必要がある場合は、SwingWorkerオブジェクト、およびpublish方法を使用して行われるべきです。

自分でThreadを作成し、それらのスレッドからSwingコンポーネントを作成または使用すると、悲しみが発生します。

関連する問題