2011-05-23 46 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)

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

相关问题