Java Swing ContentPane 令人困惑的语句

标签 java swing user-interface windowbuilder

同样的事情有两种方式。 这些行有什么不同?

第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/

相关文章:

java - 从最后一个组件开始向 GridLayout 添加组件?

java - 使用 Java 8 Streams 减少字符串列表,仅向最后一个元素添加前缀

java - 使用 JavaFX 或 Swing 的 MDI

java - 为我想要在java中的每个类创建一个类形式gui

java - 为我正在创建的 GUI 中的 JMenuItem "Copy"提供低级功能

java - 与无文本字段的按键事件同时更新文本字段

java - 在 Java swing 中获取组合框值

java - 从Zookeeper znode获取数据

java - Java中使用XPath检查XML中是否存在节点

java - Spring 循环依赖,即使使用通过 setter 进行注入(inject)