同样的事情有两种方式。 这些行有什么不同?
第1条语句中使用了 getContentPane() 方法,它的目的是什么? 这是第二个陈述的简写
JLabel lblNewLabel = new JLabel("New label");
getContentPane().add(lblNewLabel, BorderLayout.NORTH);
在此 An Object 中声明 contentPane 并设置布局后,然后通过传递设置 setContentPane 的值,然后添加而不使用 getContentPane()
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JLabel lblNewLabel = new JLabel("Name");
contentPane.add(lblNewLabel, BorderLayout.NORTH);
请帮助我。这些行让我感到困惑。
最佳答案
两者差别不大。第一个示例仅使用父窗口创建的默认内容 Pane ,第二个示例创建自己的内容 Pane 并直接使用引用。
您还可以使用...
Container contentPane = getContentPane();
JLabel lblNewLabel = new JLabel("Name");
contentPane.add(lblNewLabel, BorderLayout.NORTH);
看看How to use Root Panes了解更多详情
我应该强调这样一个事实:默认情况下,JFrame
的内容 Pane 使用 BorderLiayout
,这意味着您的第一个示例不需要设置布局,但是JPanel
使用 FlowLayout
,因此它更改了布局管理器以确认 JFrame
的期望...我猜;)
关于Java Swing ContentPane 令人困惑的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20811873/