概要

  • パネルの追加,削除を行った場合や,統合環境全体のウインドウサイズを変更した場合,パネルの大きさが変わります.
  • パネルの大きさが変わった場合でも,その大きさに合わせて表示できることが望ましいです.

実装方法

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() を実行することで,再描画します.

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-11-29 (日) 23:09:04 (3234d)