2013-10-11 37 views
4

我編寫了一個JFrame,它添加了一個JPanel,並添加了我的JCombobox。 我的問題是,JCombobox將不會正確顯示,直到我改變我的框架的大小。移動JFrame以正確顯示JCombobox

這裏是我的代碼:

/* JFrame */ 
    frame = new JFrame("Frame"); 
    frame.setBounds(0, 0, 900, 800); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    /* JPanels */ 
    panel = new JPanel(); 
    panel.setBounds(frame.getBounds()); 
    panel.setVisible(true); 
    panel.setLayout(null); 
    panel.addMouseListener(m); 

    /* JComboBox */ 
    String comboBoxListe[] = { "1", "2", "3" }; 
    JComboBox chooser = new JComboBox(comboBoxListe); 
    chooser.setSize(200, 25); 
    chooser.setLocation(30, 30); 
    chooser.setVisible(true); 

    panel.add(chooser); 
    frame.add(panel); 

有人可以看到我做錯了什麼? 感謝您的幫助:)

+0

您使用的是什麼版本的Java?相同的代碼似乎工作正常。看起來問題比你提出的要多。 –

+0

您認爲可能是另一個問題? – InformatikBabo

回答

2

JFrame已變得可見,加入組合框之前

frame.setVisible(true); 

確保這似乎後的組件添加

鞦韆是專爲layout managers是使用 - 在此使用一個

+0

+1因爲我認爲setVisible導致了這個問題。但也建議使用佈局管理器,因爲這實際上是這裏的根本問題。 – sage88

+0

謝謝它工作正常。 但我認爲這將與frame.repaint()一起工作也很好,我有一個(這裏沒有公佈)。 而我使用的是佈局管理器... – InformatikBabo

+0

@InformatikBabo,'但我認爲這會工作也沒關係了frame.repaint()' - 任何時候你添加/刪除組件,需要調用重新驗證一個可見的GUI( )(調用佈局管理器),然後重繪()(以新的大小/位置繪製組件)。您只需在面板上進行更改,而不是框架。 – camickr