如何通过子容器调整父容器大小?

时间:2014-05-05 02:47:20

标签: java swing

更具体地说,如何通过contentPane调整JFrame大小。

在这种情况下,我正在做400 * 400 JPanel,我需要它来适应JFrame。但是,如果我设置JFrame setSize(400,400),由于上部窗口标题栏占用的空间,JPanel的某些部分将被隐藏。

我知道我可以测量边框和标题栏的大小。我只是想知道是否有更好的方法。


以下是同时采用{​​{1}}和Hovercraft Full Of Eels答案的解决方案。

MadProgrammer

2 个答案:

答案 0 :(得分:4)

  

但是,如果我设置JFrame setSize(400,400),由于上部窗口标题栏占用的空间,JPanel的某些部分会被隐藏。

你为自己制造的东西太难了,因为最简单的解决方案就是不设置JFrame大小。在添加所有组件之后,在调用pack()之前调用JFrame上的setVisible(true),然后让它自己调整为其组件和布局管理器的最佳大小。

答案 1 :(得分:3)

覆盖面板的getPreferredSize方法并返回new Dimension(400, 400)

在帧呼叫pack上。调用时,pack会向内容窗格询问其首选大小,该大小通常由布局管理器计算(递归询问每个容器的首选大小)。

这将调整窗口的大小,以便可视区域满足(尽可能多的)可视区域的首选大小。