2016-04-26 9 views
0

ここに私のプログラムのコードがあります。私がメインGUIを閉じるたびに問題が発生する 新しいスレッドも終了します。デーモンスレッドではないため、定義しないでください。私は日食で働いていて、どんな助けもありがたいです。JavaでSwing GUIを閉じた後に新しいスレッドも終了する理由

public class HomeScreen extends JFrame { 

    private JPanel contentPane; 
    private JTextField textField; 
    private JTable table; 
    private JTextField textField_1; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        HomeScreen frame = new HomeScreen(); 
        frame.setVisible(true); 

        Thread t = new Thread(new Runnable() { 

         @Override 
         public void run() { 
          while(true){ 
           System.out.println("Hello");//This should print "Hello" forever but this thread exits after i close main GUI 
          } 
         } 
        }); 
        t.start(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
+1

私のPCにはまだメリがありますが、どのようにウィンドウを閉じましたか? Cmd + Q? Alt + F4? – MadProgrammer

+0

@MadProgrammer私はちょうど私のスイングGUIを閉じた –

+1

@MadProgrammerうーん..これは私が '再現することはできません'(例、ここでは同じ動作)を使用した数回の理由です。奇妙なことに、MCVEの掲載についても言及しています(OPは効果的でした)。 –

答えて

2

ありがとうございました。私はそのトリックを無限にスレッドを実行するためのステートメントを追加しました

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
+3

これは、ある時点でフレームが 'EXIT_ON_CLOSE'に設定されていて、あなたのコードには含まれていなかったことを示唆しています。 – MadProgrammer

+0

@MadProgrammerあなたは絶対に正しい場合は –

+1

*「あなたは絶対に正しいです」*将来的には、[mcve]をクリーンにコンパイルして(例えば、インポートやクローズ)、それをコピーして新しいプロジェクトやクラス定義が**動作をテストするために残っています**あなたが投稿したコードはほぼMCVEでしたが、その最後の重要なポイントには失敗しました。そして@LaxmikantRevdikarに、あなたのESPの優れた使い方と優れた使い方を見てください。 ;) –

関連する問題