goo blog サービス終了のお知らせ 

開発覚え書き

ソフトウェアシステムの開発に関わるさまざまなことの覚え書き

JFrameのコンテントペインのサイズ設定 (1)

2006-05-31 11:50:36 | Weblog
Java で JFrame のサイズ設定には

    クラス java.awt.Component にある public void setSize(int width, int height);
    または public void setSize(Dimension d);

を使用するが、ここで設定されるサイズはタイトルバーやボーダーを含むフレーム全体の大きさになる。
JFrameでコンテントペインの大きさを設定したい場合は、

    クラス java.awt.Container にある public Insets getInsets();

で insets (java.awt.Insets クラスのインスタンス) を取得しその大きさを加える必要がある。
ただし、注意点として pack(); または setVisible(true); でフレームを表示可能にしなければ正確な insets は求められない。
※ Windows XP 上でテストしてみると、非表示状態では insets はすべて 0 で、表示状態では insets: top=30 left=4 bottom=4 right=4 となった。top が大きいのはタイトルバーのためである。

もし、非表示の状態で色々設定をやるのであれば、下のようなコードで一時的に表示状態に切り替え insets を取得する必要があるようだ。

    setVisible(true);
    Insets insets = getInsets();
    setVisible(false);
    int width = 希望する幅 + insets.left + insets.right;
    int height = 希望する高さ + insets.top + insets.bottom;
    setSize(width, height);

もう少しスマートな方法はないのだろうか? --> (2)

コメントを投稿