在我们的产品中,我们的框架基本上是三个继承级别,基本上是JDialog
。此框架会覆盖默认的pack()
方法,如下所示:
@Override
public void pack() {
this.setSize(getMaximumSize());
validate();
super.pack();
}
@Override
public Dimension getMaximumSize(){
return super.getPreferredSize();
}
几乎一切都在屏幕上, pack()
就会被调用。很多这些窗口都有一个标题栏,一些工具栏,一个包含主要内容的窗格(通常可以是空的),底部有一个状态栏。
我的问题似乎是当它为容器调用getPreferredSize()
时,结果太小,即宽度似乎没问题,但高度不是。阅读文档,似乎首选大小是基于布局管理器计算的,如果它没有明确设置(我很确定它不是)。我不太确定它是如何计算的,或者我是否应该先做其他事情。
任何人对我的问题在这里有什么想法或想法?它并不总是太小,只是在某些时候。请让我知道其他信息/代码可能有助于解决这个问题。感谢。
答案 0 :(得分:0)
我相信大多数Layouts将使用获取容器的直接子级的首选大小的基本前提,然后返回包含使用其preferredSizes布局的那些组件的最小Dimension(快速检查源代码显示)这是FlowLayout,BoxLayout和GridLayout的情况。所以我可以提供两个建议:
答案 1 :(得分:0)
看起来在pack()
和getPreferredSize()
发生后,对话框中添加了一些内容,但这些添加内容并没有正确调整大小。
通常情况下,答案显然是行人而且显而易见。