我可以在显示之前获得正确的JComponent大小吗?

时间:2011-08-22 02:27:08

标签: java swing jcomponent

何时计算JComponent的大小?在屏幕上显示之后或之前? 如果我在.getSize()之前发送.setVisible(true)消息,它会给我正确的答案吗? 感谢

4 个答案:

答案 0 :(得分:7)

我有时会在调试时检查组件的大小,以找出为什么我看不到它们。在大多数情况下,当GUI已经呈现时,将实现大小。当pack()setVisible(true)调用顶级窗口时,可能会发生这种情况。我通常的方法调用序列是首先调用pack(),因为它告诉布局管理器布置他们负责的组件,并设置组件和GUI的大小,然后调用setLocationRelativeTo(null)以GUI为中心,然后调用setVisible(true)显示它。

答案 1 :(得分:6)

布局管理器负责确定组件的大小,因此在将组件添加到框架并且框架已被打包()后,您不知道其实际大小。

如果您使用的布局管理器尊重组件的首选大小,那么您可以使用:

component.getPreferredSize();

为什么你认为你需要知道它的大小?通常,您不必担心大小,让布局管理器完成其工作。

答案 2 :(得分:6)

除了通常的pack()> setVisible(true)> getPreferredSize()序列,您可以validate()相关的Container预览几何图形,如图here所示。

答案 3 :(得分:6)

如果我理解正确,你想知道组件大小的原因是一旦用户点击“更多选项”按钮就重置JWindow的大小,不是吗? 我建议执行以下操作:当用户单击该按钮时,更新添加额外组件的UI以及pack()上的执行JWindow。它应调整到适当的大小。