更具体地说,如何通过contentPane调整JFrame大小。
在这种情况下,我正在做400 * 400 JPanel,我需要它来适应JFrame。但是,如果我设置JFrame setSize(400,400),由于上部窗口标题栏占用的空间,JPanel的某些部分将被隐藏。
我知道我可以测量边框和标题栏的大小。我只是想知道是否有更好的方法。
以下是同时采用{{1}}和Hovercraft Full Of Eels
答案的解决方案。
MadProgrammer
答案 0 :(得分:4)
但是,如果我设置JFrame setSize(400,400),由于上部窗口标题栏占用的空间,JPanel的某些部分会被隐藏。
你为自己制造的东西太难了,因为最简单的解决方案就是不设置JFrame大小。在添加所有组件之后,在调用pack()
之前调用JFrame上的setVisible(true)
,然后让它自己调整为其组件和布局管理器的最佳大小。
答案 1 :(得分:3)
覆盖面板的getPreferredSize
方法并返回new Dimension(400, 400)
。
在帧呼叫pack
上。调用时,pack
会向内容窗格询问其首选大小,该大小通常由布局管理器计算(递归询问每个容器的首选大小)。
这将调整窗口的大小,以便可视区域满足(尽可能多的)可视区域的首选大小。