JDialog のウィンドウサイズは pack() で最適化せよ

JDialog のダイアログウィンドウを setVisible(true) としてもウィンドウサイズが思ったように設定されないので調べてみた。

どうやら pack() を呼び出してやらないと適切なウィンドウサイズで表示されないらしい。

サブコンポーネントの推奨サイズおよびレイアウトに合わせて、この Window をサイズ変更します。ウィンドウおよびそのオーナがまだ表示可能でない場合は、両方とも表示可能にしてから推奨サイズを計算します。 preferredSize が計算されたあとに、Window は検査を受けます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Window.html#pack()

ダイアログウィンドウの可視化アクションは以下のようなコードが適切ということで一件落着。

dialog.pack();
dialog.setLocationRelativetoTo(frame); // ダイアログウィンドウ位置の設定
dialog.setVisible(true);

JAVA2D(1.3)に関するまとめページに「pack()とsetVisible()の違い」「setVisible()とshow()の違い」が書いてあって参考になりました。



$Date: 2009-04-15 23:51:04 +0900 (Wed, 15 Apr 2009) $