#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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS