我有一个JDialog
对象,很简单,必须为 200 像素宽,无论其内容如何。
我需要能够动态调整高度,以始终确保显示所有内容。我该怎么做?
- 我已经尝试过覆盖
JDialog.getPreferredSize()
方法,但我不知道要为高度值添加什么。 - 我试过检查
main
JPanelisValid()
和是否isShowing()
都返回 true,只要 Panel 的一部分实际上是可见的。
首选大小仅适用于布局管理器,它们不能限制窗口大小。
窗口对等体有一种强制最小尺寸的方法,因此效果很好,但除了监听调整大小并重置为所需大小之外,没有什么可以用于最大尺寸:
setMinimumSize(new Dimension(200, Integer.MAX_VALUE));
addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
Dimension size = getSize();
size.width = 200;
setSize(size);
}
});
覆盖时getPreferredSize()
,您可以向超类询问高度:
public Dimension getPreferredSize() {
Dimension superPref = super.getPreferredSize();
return new Dimension(200, superPref.getHeight());
}
如果您使用的是 JDialog,则可以getPreferredSize
像这样覆盖该方法:
@Override
public Dimension getPreferredSize() {
return Toolkit.getDefaultToolkit().getScreenSize();
}
或明确指定维度:
@Override
public Dimension getPreferredSize() {
return new Dimension(width, height);
}