2016-10-16 5 views
1

プロジェクトを実行すると、Javaがドックに表示されますが、まったく実行されません。約5-10秒間そこにとどまり消えます。コードやMacに何か問題がありますか?MacでJFrameが動作していない

import javax.swing.JFrame; 

public class Test extends JFrame { 

    public Test() { 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setSize(600,600); 
     this.setVisible(true); 
     this.setResizable(false); 
     this.setTitle("Test"); 
    } 
+1

あなたの 'main'関数はどこにありますか?あなたは '新しいテスト()'をどこでやっていますか? –

+0

それは私が必要としていたもので、完全に認識されませんでした。ありがとう! – KingF

答えて

1

..仕事をするために、どこかのテストのインスタンスを呼び出す必要があります。

GUIスレッドを作成し、TestJFrameクラスをインスタンス化するために、これをメイン関数(Test.javaまたは他のクラスにあります)に追加します。

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

それはあなたが削除されますされ、バックグラウンドで、同時に他の事に行うことができますようnew Test();を呼び出すと、あなたがする必要があるすべては、しかしjavax.swing.SwingUtilities.invokeLaterの内側にそれをやってすると、アプリケーションの将来にとって非常に重要です任意の目に見える待ち時間。 This is what Java itself recommends to do.

import javax.swing.SwingUtilities;にするか、import javax.swing.*;にする必要があります。

-1

あなたはそれがMacであることとは何の関係もありません

public class Test extends JFrame { 

    private static final long serialVersionUID = -2949102464273156555L; 

    public Test() { 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setSize(600, 600); 
    this.setVisible(true); 
    this.setResizable(false); 
    this.setTitle("Test"); 
    } 

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

ありがとう!しかし、 – KingF

+0

とは何ですか?private static final long serialVersionUID = -2949102464273156555L;ために? – KingF

+0

JFrameは直列化可能なオブジェクトなので、クラスにserialVersionUID、... –

関連する問題