将组件存储在ArrayList中

时间:2012-04-30 19:33:31

标签: java swing loops arraylist add

我希望将JButton,JTextField,JTextArea等组件存储在同一个ArrayList中,然后循环遍历它并将每个组件添加到JFrame。我尝试将它们存储在ArrayList中,但是当我遍历它并将其包含的每个组件添加到我的框架中时,没有任何内容出现在框架中。有谁知道如何做到这一点?提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试像这样声明ArrayList

List<JComponent> = new ArrayList<JComponent>();

以上是有效的,因为JComponentJButtonJTextFieldJTextArea的共同祖先 - 也就是说,它是所有JComponents共有的超类。

我不清楚:为什么要先将组件添加到ArrayList?将它们直接添加到JFrame

答案 1 :(得分:1)

继续这样做:

public class Example {

public static void main(String[] args) {

    JFrame frame = new JFrame();

    List<Component> components = new ArrayList<Component>();

    components.add(new JButton("test1"));
    components.add(new JButton("test3"));
    components.add(new JButton("test3"));

    frame.setLayout(new FlowLayout());

    for(Component component: components)
        frame.getContentPane().add(component);

    frame.pack();
    frame.setVisible(true);
}
}
  • 将布局管理器添加到您的框架
  • 根据您的组件调用pack()调整框架大小
  • 将框架设置为可见

答案 2 :(得分:1)

您知道如何使用布局管理器吗?

  

布局管理器是实现LayoutManager接口*的对象,用于确定容器内组件的大小和位置。虽然组件可以提供大小和对齐提示,但容器的布局管理器对容器中组件的大小和位置有最终决定权。

Using Layout Managers