簡體   English   中英

如何在ActionListener中添加Swing組件?

[英]How to add Swing components in an ActionListener?

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

這是我的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。 有人可以幫忙嗎?

非常感謝。

當您從可見的GUI動態添加/刪除組件時,您需要執行以下操作:

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

如果您需要更多幫助,請發布證明問題的SSCCE

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM