2017-07-01 17 views
0

私は、中央に別のパネルを含む境界レイアウトを持つメインパネルを持っています。 私は中央のパネルの内側にペイントしたいので、私はそれの境界を取得する必要があります。別のJPanelの中​​央にJPanelの境界を設定するにはどうすればよいですか?

panel_main.add(panel, BorderLayout.CENTER); 

私はこのような長方形で境界を保存したい:

Rectangle bounding = new Rectangle 
    (panel.getX(), panel.getY(), panel.getWidth(), panel.getHeight()); 

しかし、すべての引数は、どのように私は、パネルの境界を得るのですか0のようですか? 代わりにBorderLayoutの境界を取得できますか?

+0

私はあなたが境界を必要としているかどうかはわかりません。もしあなたがレイアウトを呼び出した後( 'pack()'の後に) – c0der

答えて

1

しかし、すべての引数は、作成されたときにすべてのSwingコンポーネントは、(0、0)の大きさを持っている0

のようです。コンポーネントは、フレームがパックされて可視になったときにのみサイズが与えられます。

私は中央のパネルの内側にペイントしたいので、私はそれの境界を取得する必要があります。

パネルのpaintComponent()メソッドを上書きします。次に、getSize()メソッドを使用して、ペイントの実行場所を制御できます。

また、レイアウトマネージャがフレームを適切にpack()できるように、パネルのgetPreferredSize()メソッドをオーバーライドする必要があります。

詳細については、Custom PaintingのSwingチュートリアルのセクションを読んで開始してください。

+0

(しかし、上記の例のように)メインパネルに追加した後は、サイズが正しくなければなりません。 – Melkor

関連する問題