概要 †
- パネルの追加,削除を行った場合や,統合環境全体のウインドウサイズを変更した場合,パネルの大きさが変わります.
- パネルの大きさが変わった場合でも,その大きさに合わせて表示できることが望ましいです.
実装方法 †
1.パネルサイズの取得およびパネルサイズ変更の有無の確認 †
- 可視化ツール内で,スーパークラスで定義されている boolean getPanelSize() を実行すると,スーパークラスで定義されている変数 int oldSizeX, oldSizeY, sizeX, sizeY, double changeX, changeY に以下の値が代入されます.
- oldSizeX と oldSizeY に,直前のパネルのサイズ (sizeX,sizeY) を代入
- sizeX と sizeY に,現在のパネルのサイズを代入(初期値にはウインドウサイズから計算された値が代入されます)
- changeX と changeY に,パネルのサイズの変化倍率(sizeX/oldSizeX, sizeY/oldSizeY)を代入
(oldSizeXやoldSizeYが 0 だったときは,1.0 が代入されます)
- また,パネルサイズに変更があった場合には true を,サイズ変更がなかったときは false を返り値とします.
2.パネルサイズ変更への対応 †
- 2次元のグラフィック表示を行う関数 paintComponent(Graphics g) の冒頭で,以下の様に処理を書くことができます.
boolean change = getPanelSize();
if(change)
calculateCoordinates(); //パネルサイズの変更があった場合,座標を再計算する自作の関数を呼び出す
3.新しい座標の計算 †
- パネル内の描画を行う際に, x 座標を changeX 倍, y 座標を changeY 倍することで,新しいパネルサイズにおける座標を得ることができます.
- パネル全体を覆う背景の場合には,sizeX, sizeY をそのまま使うことで,パネルサイズに対応できます.
4.パネルの再描画 †
- 可視化ツール内で,repaint() を実行することで,再描画します.