読者です 読者をやめる 読者になる 読者になる

kiyo_hikoのブログ

メモ+日記?

きよツール:回答表示画面のレイアウトがいまいち見苦しい件で解決策

玄関の鍵を開けている時に唐突に解決方法を思いついた。メモル

今の回答表示画面は迷走中だが:
f:id:kiyo_hiko:20140819031724p:plain:w320


問題画面のレイアウトがこう:
f:id:kiyo_hiko:20140819031607p:plain:w320

だから、これに近ければ近いレイアウトであればあるほど違和感がない。
つまりこう切り分けて:
f:id:kiyo_hiko:20140819031823p:plain:w320

こうなればいいはず:
f:id:kiyo_hiko:20140819031856p:plain:w320

Javaでどう組むか

そもそもJFrameとGlassPaneでの実装を全く別のものと考えていたのが敗北の元で、たぶんレイアウト部分を1つのクラスに切って、配置についての責任はそいつにお任せすればいい。
上の赤枠部分を1つのクラスに切ってしまうわけだ。

現状、

  • MainWindow extends JFrame
  • AnswerDisplay extends JPanel

2つのクラスを完全に別個に作っているけど、これをこうする:

  • BaseLayoutPanel extends JPanel
  • MainWindow extends JFrame
    • win.getContentPane().add(blp = new BaseLayoutPanel())
  • AnswerDisplay extends BaseLayoutPanel

上のコード例だとblpがフィールドみたいな扱いになってるけど、別にQuizDisplay的なPanelに切り出してMainWindowにaddしても良さげだな。これならさらに別の表示モードを作ってもBaseLayoutPanelを継承するか包含すれば基本レイアウトは勝手に維持されるし、いまGlassPaneとして解答表示見せてるけど、別にCardLayout使ったっていい。
うん。たぶんウィンドウからPanelを分離できるんでやり方としてはそっちのほうが冴えてるはず。

それにしても開発環境がVenue 8 Proで解像度が1280 x 800とシオシオなのがつらいな。きよツールプレーヤーとしては優秀だが、またクラス数とか膨らんできて、開発用にHD+以上のマシンとかかなりほしい

Venue 11 ProとかFullHDらしいがいいのかな?