我使用JPanel
和两个JComboBox
控件制作了JTextField
课程。
JFrame f = new JFrame();
JPanel p = new JPanel();
ComparisonPanel cp = new ComparisonPanel(); //jPanel with a few elements
ComparisonPanel cp2 = new ComparisonPanel();
p.setLayout(new FlowLayout()/*new GridLayout(2, 2)*/);
f.getContentPane().add(cp);
f.getContentPane().add(cp2/*cp*/);
f.setVisible(true);
它只显示ComparisonPanel
一次。我实际上是想在运行时生成一个GUI,面板将通过一些修改(不同的标签等)重复,然后从这个动态生成的GUI中获取值。
答案 0 :(得分:5)
您正在设置p
的布局,而不是您尝试将JPanel添加到的容器的布局,即contentPane,默认情况下使用BorderLayout的容器。 BorderLayout使用容器只会显示添加的所有最后一个组件(以默认方式),这会搞砸你。
建议:将您的ComparsonPanel对象添加到p JPanel,然后将那个单个组件添加到contentPane。即,
JFrame f = new JFrame();
JPanel p = new JPanel();
ComparisonPanel cp = new ComparisonPanel(); //jPanel with a few elements
ComparisonPanel cp2 = new ComparisonPanel();
p.setLayout(new FlowLayout()/*new GridLayout(2, 2)*/);
p.add(cp);
p. add(cp2);
f.getContentPane().add(p);
f.pack();
f.setVisible(true);
更好的是,请阅读layout manager tutorials。