JAVA:填充框架的方法。add(), setContentPane(), getContentPane()

2022-09-04 03:24:40

我找到了三种方法来填充我的JFrame框架=新的JFrame(“...”)createContentPanel返回一个JPanel,createToolBar返回一个ToolBar。

frame.add(this.createToolBar(), BorderLayout.PAGE_START); //this works and puts the ToolBar above and the ContentPanel under it<br>
frame.add(this.createContentPanel(), BorderLayout.CENTER);

frame.setContentPane(this.createContentPanel()); //this lets the JToolBar hover over the ContentPanel
frame.getContentPane().add(this.createToolBar()); 

frame.getContentPane().add(this.createContentPanel()); //this only puts the last one into the JFrame
frame.getContentPane().add(this.createToolBar());

现在我想知道为什么我应该使用getContentPane()/setContentPane()方法,如果我可以使用一个简单的frame.add(...)来填充我的框架。


答案 1

你是对的,你使用哪个(vs.)并不重要,因为它们本质上都调用相同的代码,但是将来有时你需要访问contentPane本身,例如如果你想改变它的边框,设置它的背景颜色或确定它的尺寸,所以你可能会在某个时候使用getContentPane(), 因此,了解它并熟悉它将是有帮助的。JFrame#add(...)JFrame#getContentPane().add(...)


答案 2

这只把最后一个放到JFrame中

您需要了解布局管理器的工作原理。默认内容窗格是使用 BorderLayout 的 JPanel。当您添加组件并且未指定约束时,它将默认为 CENTER。但是,您只能在中心有一个组件,因此布局管理器只知道最后添加的组件。调用布局管理器时,它会设置该组件的大小()和位置()。另一个组件的大小为 0,因此从不上漆。


推荐