Java Swing ContentPane令人困惑的语句

时间:2013-12-28 06:46:10

标签: java swing user-interface windowbuilder

两种方式相同。 这些方面有什么不同?

第一个语句中的

使用了getContentPane()方法,它的目的是什么? 这是第二次发言的简写

JLabel lblNewLabel = new JLabel("New label");
getContentPane().add(lblNewLabel, BorderLayout.NORTH);

在这个An Object声明的contentPane中,然后设置Layout然后通过传递设置setContentPane的值,然后在不使用getContentPane()的情况下添加

contentPane = new JPanel();             
 contentPane.setLayout(new BorderLayout(0, 0));
 setContentPane(contentPane);

 JLabel lblNewLabel = new JLabel("Name");
 contentPane.add(lblNewLabel, BorderLayout.NORTH);

Plz帮助我。这些线条使我感到困惑。

2 个答案:

答案 0 :(得分:6)

两者之间没什么区别。第一个示例仅使用父窗口创建的默认内容窗格,其中第二个示例创建自己的内容窗格并直接使用引用。

你也可以使用......

Container contentPane = getContentPane();

JLabel lblNewLabel = new JLabel("Name");
contentPane.add(lblNewLabel, BorderLayout.NORTH);

请查看How to use Root Panes了解详情

我应该强调一个事实,默认情况下,JFrame的内容窗格使用BorderLiayout,这意味着您第一个示例不需要设置布局,但JPanel使用FlowLayout,因此它更改了布局管理器以确认JFrame的预测...我想;)

答案 1 :(得分:0)

只需创建一个面板,然后在代码末尾将该组件添加到该面板

写下这个

getContentPane().add(yourPanel);