我正在接近Swing
java库的研究。
以下简单代码"在大多数情况下"不起作用(参见下面的图1)(label1
以某种方式消失或根本不添加到contentPane
它很少有效(我必须多次运行并停止以获得正确的结果)。 (图2)
有时没有显示。 (PIC3)
我知道它应该由布局管理员处理,但我有兴趣了解它为什么会发生而不是解决这个问题。
我在Eclipse 7和8.1上都遇到过这个问题
THX
public static void main(String[] args){
// TODO Auto-generated method stub
JFrame finestra=new JFrame("frame title");
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra.setBounds(0, 0, 300, 700);
finestra.setVisible(true);
JLabel label1=new JLabel("label 1");
finestra.add(label1);
JLabel label2=new JLabel("label 2");
finestra.add(label2);
}
PIC1: ]
PIC2: ]
PIC3: ]
答案 0 :(得分:0)
JFrame.add(Component)将给定组件添加到JFrame内容窗格的“center”。因此,当您添加label1时,它会添加到“center”。当你添加label2时,它会替换“center”中的label1。这就是为什么你最终只得到label2。请尝试以下代码并查看:
public class Test
{
public static void main(String[] args)
{
JFrame finestra=new JFrame("frame title");
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
finestra.setBounds(0, 0, 300, 700);
JLabel label1=new JLabel("label 1");
finestra.add(label1, BorderLayout.NORTH);
JLabel label2=new JLabel("label 2");
finestra.add(label2, BorderLayout.CENTER);
// Call setVisible(true) after labels are layed out.
finestra.setVisible(true);
}
}