JAVA SWINGのrepaint()でしばし嵌まる
(2015.08.18)
”オシロジ”は簡易なオシロ機能とロジアナ機能を果たすRaspiのアプリケーションで、PIC32MXの計測プログラム(C言語)とRaspiの操作・表示プログラム(JAVA Swing)で構成されます。
計測プログラムの開発と操作・表示プログラムの開発を(交互に)繰り返しながら、少しずつ作業をすすめています。
SWING GUIビルダーの力を借りて、一年前にそこそこ動くものができたのですが、その先に進むことがなかなか出来ません。
(一年前にここまで動いた)
左側の設定・操作画面と右側の計測表示画面をマルチ・ウィンドウ化したいと考え、DesktopPane、TabbedPanel、LayerdPaneなどの方法を試してみたのですが、どうもしっくりしません。
悩んだ挙げ句、設定・操作画面はボタン操作で複数のPanelを張り替えることにしました。しかし、これまでSWING GUIビルダー頼みの開発を続けてきたので、JAVA Swingの基本的なところが理解できていないようです。Panelを張り替えるという単純な操作が、思うように動いてくれません。orz
”remove()とrepaint()”でググって、ようやく"revalidate()"にたどり着きました。ラベルの張り替えならrepaint()だけで良いのですが、張り替えたPanelの描画には、repaint()する前にrevalidate()を呼び出す必要があるようです。
まだ、ばらばらですが”GUIビルダーのくびき”を逃れて自由になったオシロジの今の姿です。