2011-12-22 101 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(真);'在末端。 – 2011-12-22 10:35:25

+0

對不起,我剛剛找到答案,我應該在JFrame上運行包,我已經忘記了;( – lc2817 2011-12-22 10:36:42

+0

@HarryJoy它的工作,謝謝 – lc2817 2011-12-22 11:05:28

回答

2

解決方案:

移動m.setVisible(true);末。

延Schauder不另一評論:

你的代碼也應在美國東部時間運行。還有什麼是要求 麻煩

可能是他想告訴像這樣:

一切處理Swing組件,包括有建築must run in the EDT。如果它沒有被破壞,雖然你可能沒有注意到它。

對於您可以從主要方法如下移動你的邏輯類的構造函數和調用構造:

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

您也可以編寫邏輯一些其他的方法,然後構造函數。