我希望将JButton,JTextField,JTextArea等组件存储在同一个ArrayList中,然后循环遍历它并将每个组件添加到JFrame。我尝试将它们存储在ArrayList中,但是当我遍历它并将其包含的每个组件添加到我的框架中时,没有任何内容出现在框架中。有谁知道如何做到这一点?提前谢谢。
答案 0 :(得分:1)
尝试像这样声明ArrayList
:
List<JComponent> = new ArrayList<JComponent>();
以上是有效的,因为JComponent
是JButton
,JTextField
,JTextArea
的共同祖先 - 也就是说,它是所有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接口*的对象,用于确定容器内组件的大小和位置。虽然组件可以提供大小和对齐提示,但容器的布局管理器对容器中组件的大小和位置有最终决定权。