在JPanel中动态添加组件

3

如何在JPanel中动态添加组件?我有一个“添加”按钮,当我点击按钮时,应该将组件添加到JPanel中。

我的问题是,在单击“添加”按钮时向JPanel添加文本字段和按钮,用户可以根据需要多次单击“添加”按钮,我必须将它们添加到JPanel中。我已经向我的JPanel添加了滚动条面板,并将JPanel布局管理器设置为null。

2个回答

6
与您通常所做的一样,只是您需要调用以下内容:
panel.revalidate();

当您完成后,由于容器已经被实现。


1
确实(虽然我认为repaint实际上并不必要)。请参阅java.awt.Container.add的API文档。 - Tom Hawtin - tackline
之前我一直认为这两种方法总是一起使用的,因为在很多例子中都是这样的。我自己尝试了一下,确实,重新验证似乎就足够了!谢谢你的建议,你是对的。 - crusam
4
在这个简单的情况下,“添加”一个按钮通常不需要使用repaint()。但是,如果尝试“删除”一个按钮,它将无法工作。在这种情况下,您需要使用repaint()。我的一般规则是先尝试revalidate(),如果不起作用,则添加repaint()。 - camickr
应该对它进行更多的测试,谢谢你的建议! - crusam

4
使用ActionListener,你可以像这样使用匿名类:
JPanel myJPanel = new JPanel();

...

b = new Button("Add Component");
b.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        JLabel someLabel = new JLabel("Some new Label");
        myJPanel.add(someLabel);
        myJPanel.revalidate();
    }
});

如果容器已经被显示,那么在添加组件后,您必须重新验证容器(myJPanel)。 - Steve McLeod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接