2011-05-23 44 views
2

我有一個名爲newMI的JMenuItem,在擴展JFrame的類中。我想在單擊JMenuItem時將Swing組件添加到我的JFrame中。出於測試目的,我試圖添加一個JPanel並將JPanel的背景顏色設置爲紅色。如何在ActionListener中添加Swing組件?

這裏是我的ActionListener:

newMI.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JPanel p = new JPanel(); 
     p.setBackground(Color.red); 
     add(p); 
    } 
} 

但是這是行不通的。如果我在其他Swing組件的初始化期間將其添加到JFrame中,我可以更改JPanel的背景顏色。但是我無法直接在ActionListener中將Swing組件添加到JFrame中。有人可以幫忙嗎?

非常感謝。

回答

7

當你動態地添加/從可視GUI刪除組件,那麼你需要做的:

panel.add(...); 
panel.revalidate(); 
panel.repaint(); 

如果您需要更多的幫助,然後發佈SSCCE演示該問題。

2

您需要重新佈局組件 - 您的新面板已添加,但大小爲0x0像素。添加面板後,在您的組件上調用layout(true)

如果組件中沒有佈局管理器,則必須在添加到組件後手動設置添加的面板的位置和大小。

相關問題