Java Swing ContentPane令人困惑的语句

Zu0*_*007 0 java user-interface swing windowbuilder

两种方式相同.这些线路有什么不同?

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

JLabel lblNewLabel = new JLabel("New label");
getContentPane().add(lblNewLabel, BorderLayout.NORTH);
Run Code Online (Sandbox Code Playgroud)

在这个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);
Run Code Online (Sandbox Code Playgroud)

Plz帮助我.这些线条令我困惑.

Mad*_*mer 6

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

你也可以用......

Container contentPane = getContentPane();

JLabel lblNewLabel = new JLabel("Name");
contentPane.add(lblNewLabel, BorderLayout.NORTH);
Run Code Online (Sandbox Code Playgroud)

请查看如何使用根窗格以获取更多详细信息

我应该强调一个事实,默认情况下,JFrame's内容窗格使用了一个BorderLiayout,这意味着你第一个例子不需要设置布局,而是JPanel使用FlowLayout,所以它改变了布局管理器以确认JFrame... 的预期...猜;)