3

内容に関係なく、非常に単純に、幅が200ピクセルでなければならないJDialogオブジェクトがあります。

すべてのコンテンツが常に表示されるように、高さを動的に調整できるようにする必要があります。どうすればいいですか?

  • メソッドをオーバーライドしようとしましJDialog.getPreferredSize()たが、高さの値に何を追加すればよいかわかりません。
  • mainJPanelisValid()isShowing()が、Panelの一部が実際に表示されている限り、両方ともtrueを返すかどうかを確認してみました。
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 に答える