2010-08-30 151 views
3

如何在jpanel中動態添加組件? 我有添加按鈕,當我點擊按鈕組件應該被添加到JPanel。在JPanel中動態添加組件

我的問題是,當我點擊添加按鈕時,添加一個文本框和按鈕jpanel用戶可以點擊添加按鈕任意次數根據我必須將它們添加到jpanel。我已經將scrollerpane添加到我的jpanel,並將jpanel佈局管理器設置爲null。

回答

5

正如你總是這樣,但你必須調用:

panel.revalidate(); 

當你完成,因爲容器已經實現。

+1

事實上(雖然我不認爲'repaint'實際上是必要的)。查看java.awt.Container.add'的API文檔。 – 2010-08-30 11:04:32

+0

在我一直認爲兩種方法總是一起使用之前,因爲我在許多例子中都看到了它。 只是自己試了一下,確實,重新驗證似乎夠了!感謝你的建議,你是對的。 – crusam 2010-08-30 12:10:12

+4

在這個簡單的「添加」按鈕的情況下,您通常不需要使用repaint()。然而,嘗試一個簡單的「刪除」按鈕的情況下,它不會工作。在這種情況下,您確實需要使用repaint()。我的一般規則是先用revalidate()嘗試,如果不起作用,則添加一個repaint(); – camickr 2010-08-30 15:33:36

4

使用的ActionListener,您可以使用匿名類是這樣的:

JPanel myJPanel = new JPanel(); 

... 

b = new Button("Add Component"); 
b.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JLabel someLabel = new JLabel("Some new Label"); 
     myJPanel.add(someLabel); 
     myJPanel.revalidate(); 
    } 
}); 
+0

如果已經顯示容器,則必須在添加組件後重新驗證容器(myJPanel)。 – 2010-08-30 10:30:57