如何在ActionListener中添加Swing组件?

elb*_*iso 2 java swing 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);
   }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果我在其他Swing组件的初始化期间将它添加到JFrame,我可以更改JPanel的背景颜色.但我无法直接在ActionListener内部将Swing组件添加到JFrame.有人可以帮忙吗?

非常感谢.

cam*_*ckr 7

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

panel.add(...);
panel.revalidate();
panel.repaint();
Run Code Online (Sandbox Code Playgroud)

如果您需要更多帮助,请发布证明问题的SSCCE.