JDialog - 如何设置固定宽度和可变高度?

时间:2012-08-30 10:08:13

标签: java swing

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

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

  • 我尝试覆盖JDialog.getPreferredSize()方法,但我无法弄清楚要为高度值添加什么。
  • 我已经尝试检查main JPanel isValid()isShowing()是否都返回true,只要Panel的一部分实际可见。

3 个答案:

答案 0 :(得分: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);
        }
    });

答案 1 :(得分:0)

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

public Dimension getPreferredSize() {
    Dimension superPref = super.getPreferredSize();
    return new Dimension(200, superPref.getHeight());
}

答案 2 :(得分:0)

如果您使用的是JDialog,则可以覆盖getPreferredSize方法,如下所示:

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

或明确指定维度:

@Override
public Dimension getPreferredSize() {
    return new Dimension(width, height);
}