如何在运行时向面板添加新组件

时间:2010-02-20 11:44:14

标签: java swing

我想在运行时将JCombobox添加到面板中,我对此并不了解,所以如果您对此有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

我假设您要将一个组合框添加到屏幕上已有的组件中。只需将该组件添加到相应的Container,然后调用Containervalidate方法即可。这是一个小例子:

import java.awt.Dimension;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Application {

    private static final String[] choices = { "One", "Two", "Three" };

    /**
     * @param args
     */
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        final JPanel content = new JPanel();
        content.setPreferredSize(new Dimension(50, 200));
        content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
        JButton addButton = new JButton(new AbstractAction("Add Combobox") {

            private static final long serialVersionUID = 1L;

            @Override
            public void actionPerformed(ActionEvent arg0) {
                content.add(new JComboBox(choices));
                content.validate();
            }
        });

        frame.add(content);
        content.add(addButton);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

虽然我仅为此示例使用了一个框架,但它也适用于JPanel