2016-12-29 72 views
1

我想將文本區域添加到具有流佈局的面板,但其不顯示在我的GUI上...任何想法請參見?將文本區域添加到FlowLayout面板Java Swing

private void makeTypes() { 
    westPanel.setVisible(false); 
    centerPanel.setVisible(false); 
    northPanel.setVisible(false); 
    contentPane.add(westPanel, BorderLayout.WEST); 
    contentPane.add(centerPanel, BorderLayout.CENTER); 
    contentPane.add(northPanel, BorderLayout.NORTH); 
    // set panel layout and add components 
    centerPanel.setLayout(new FlowLayout()); 
    northPanel.setLayout(new GridLayout(4, 1)); 
    /** 
    * Adding East Panel 
    */ 
    eastPanel.setLayout(new GridLayout(4,1)); 

    /** 
    * Adding text area to Centre Panel 
    */ 
    a1=new JTextArea(); 
    centerPanel.add(a1); 
    a1.setVisible(true); 

} 

回答

0

centerPanel是無形的:

centerPanel.setVisible(false); 

所以沒有加入到它會顯示。

我看到你在JTextArea上調用setVisible(true),但是如果它被添加到一個不可見的容器中,它將不起作用,因爲它也會被隱藏。其他建議:給你的JTextArea體面的行和列屬性值,這可以通過它的構造函數來完成,該構造函數需要兩個整數(對於行和列)。並將JTextArea包裝到JScrollPane中,並將添加到GUI。如果在程序運行期間而不是在啓動時調用此代碼,則在添加和刪除組件後,請在容器上調用revalidate()repaint()

想要更多更好的幫助,請考慮創建併發布有效的SSCCE

+0

@Hannah:那麼讓我們看看你的[sscce](http://sscce.org),我們可以編譯和運行的代碼,併爲自己查看你的問題。 –

+0

@Hannah:你也永遠不會告訴我們什麼時候調用這個方法,如果它在GUI啓動或GUI運行期間。如果在運行期間,添加和刪除組件後,在容器上調用'revalidate()'和'repaint()'。 –

+0

@Hannah:好的,你是怎麼解決的? –