3

我有一个JDialog对象,很简单,必须为 200 像素宽,无论其内容如何。

我需要能够动态调整高度,以始终确保显示所有内容。我该怎么做?

  • 我已经尝试过覆盖JDialog.getPreferredSize()方法,但我不知道要为高度值添加什么。
  • 我试过检查mainJPanelisValid()和是否isShowing()都返回 true,只要 Panel 的一部分实际上是可见的。
4

3 回答 3

6

首选大小仅适用于布局管理器,它们不能限制窗口大小。

窗口对等体有一种强制最小尺寸的方法,因此效果很好,但除了监听调整大小并重置为所需大小之外,没有什么可以用于最大尺寸:

    setMinimumSize(new Dimension(200, Integer.MAX_VALUE));
    addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent e) {
            Dimension size = getSize();
            size.width = 200;
            setSize(size);
        }
    });
于 2012-08-30T10:17:52.257 回答
0

覆盖时getPreferredSize(),您可以向超类询问高度:

public Dimension getPreferredSize() {
    Dimension superPref = super.getPreferredSize();
    return new Dimension(200, superPref.getHeight());
}
于 2012-08-30T10:16:32.237 回答
0

如果您使用的是 JDialog,则可以getPreferredSize像这样覆盖该方法:

@Override
public Dimension getPreferredSize() {
    return Toolkit.getDefaultToolkit().getScreenSize();
}

或明确指定维度:

@Override
public Dimension getPreferredSize() {
    return new Dimension(width, height);
}
于 2015-04-25T23:14:47.130 回答