#topicpath #contents * Swing [#o06ebbae] Swingと組み合わせて使えるように整備しました。 #ref(PixelDrawing-20061101-3.png,nolink) #ref(PixelDrawing-20061101-3.zip) - 開発環境: NetBeans ** 実装 [#n66a0031] 確認のための操作やパラメータ表示などは外に出してSwingで確認すれば良いので、Swingと組み合わせて使えるようにしました。 - 上のスクリーンショットのステータスバーがSwingです。 - Swing部分のデザインはNetBeansで行いました。非常に楽です。 ** 受け皿 [#ya255836] PixelBufferの受け皿を用意しました。 + PixelComponent -- バッファとして内部でPixelBufferを保持します。 -- イベントなどを下層の実装(この場合はSwing)から抽象化したものです。独自の流儀でイベントを処理しています。 -- PixelDrawingでGUI部品を開発するときは、PixelComponentを継承して拡張します。 + PixelPanel -- Swing側に配置してPixelComponentと接続します。 -- 受け皿のため、基本的にPixelPanelは継承しません。 *** validate [#m3a2b4ef] 表示する直前にバッファを作るためContainer#validateを利用しました。手探りのため試行錯誤しました。詳しいことは[[開発日記>http://gir-lab.spaces.live.com/blog/cns!63A4C32EDA5CF2F7!427.entry]]に書きました。 ** PixelEvent [#k8802dab] Swing関連の処理はPixelDrawingの外に出したかったため、リフレクションを使った委譲を実装しました。詳しいことは[[開発日記>http://gir-lab.spaces.live.com/blog/cns!63A4C32EDA5CF2F7!426.entry]]に書きました。 委譲を管理するためのクラスとしてPixelEventを用意しました。C#のeventに相当する機能を提供します。 *** 使用例 [#w8e99987] public class Test { public Test() { PixelEvent e = new PixelEvent(); e.add(this, "myEvent1"); e.add(this, "myEvent2"); e.invoke(this, null); } private void myEvent1(Object sender, Object data) { System.out.println("myEvent1"); } private void myEvent2(Object sender, Object data) { System.out.println("myEvent2"); } } ** コメント [#p1742ee3] #comment(below) //#comment(below)