2011-12-22 5 views
0

私は(Windows 7のプラットフォーム上で)、次の行動を観察:スイングJComboBoxの奇妙な行動

import java.awt.*; 
import javax.swing.*; 
public class Main extends JFrame{ 
    JPanel p; 
    JComboBox<String> l; 
    JLabel title; 
    public static void main(String[] arg){ 
     Main m = new Main(); 
     m.setVisible(true); 
     m.setSize(400,400); 
     m.p = new JPanel(); 
     //m.l = new JComboBox<String>(); 
     m.title = new JLabel("HELLO"); 
     m.p.add(m.title); 
     m.setContentPane(m.p); 
     } 
} 

表示HELLOが、私はJComboBoxをインスタンス化する行のコメントを外した場合、それは何も表示されません。それは何が原因でしょうか?あなたはバグを再現できますか?私のコメントから

+2

最後に 'm.setVisible(true);'を移動します。 –

+0

申し訳ありませんが、私はJFrameでパックを実行する必要があります、私はそれを忘れてしまった、( – lc2817

+0

@ HarryJoy、ありがとう – lc2817

答えて

2

ソリューション:最後に

移動m.setVisible(true);イェンスSchauderから

別のコメント:

あなたのコードは、EDTで実行する必要があります。

すべてはSwingコンポーネントを扱う、そこに建設must run in the EDT含む:他に何かは、彼がこのような何かを伝えたいかもしれませ トラブル

を求めています。もしそれが分からなければ、気づかないかもしれませんが。そのために

あなたはクラスのコンストラクタにmainメソッドから、あなたのロジックを移動し、次のようにコンストラクタを呼び出すことができます:

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

あなたはまた、いくつかの他の方法その後、コンストラクタでロジックを記述することができます。