Java 如何在ActionListener中添加Swing组件?

Java 如何在ActionListener中添加Swing组件?,java,swing,actionlistener,Java,Swing,Actionlistener,我在扩展JFrame的类中有一个名为newMI的JMenuItem。我想在单击JMenuItem时将Swing组件添加到JFrame中。出于测试目的,我尝试添加一个JPanel并将JPanel的背景色设置为红色 以下是我的ActionListener: newMI.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JPanel p = new JPane

我在扩展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组件初始化期间将JPanel添加到JFrame中,我可以更改其背景色。但是我不能直接在ActionListener中向JFrame添加Swing组件。有人能帮忙吗


非常感谢。

您需要重新布局您的组件--您的新面板已添加,但大小为0x0 px。添加面板后,在组件上调用
layout(true)


如果组件中没有布局管理器,则必须在将添加的面板添加到组件后手动设置其位置和大小。

从可见GUI动态添加/删除组件时,需要执行以下操作:

panel.add(...);
panel.revalidate();
panel.repaint();
如果你需要更多的帮助,那就发表你的文章,说明问题所在