hanatoyume.net   ~「花とゆめ」ファンサイト風テクノロジと自然の調和と探求~ twitterやめました・・・
ホーム  :  新着記事  :  記事一覧  :  Wiki  :  リンク  :  白泉社 花とゆめ  : 

   

SWTのBrowserコンポーネント拡張のコツ

IT・インターネットタイトルだけだと意味不明ですが、何年かぶりにJavaでGUI(SWT)を書いてます。
Windowsのコンポーネント(OLE)を呼んでるんで、速くて簡単なんですけど、
ここいらのクラスは、なんというかほとんどprotected扱いなので、
拡張(継承)するのにちょいと手間が必要だったりしました、のでメモしておきます。
(毎回忘れて毎回調べてるため・・・)

んーでも、JavaのGUIなんて、AWT以来だなー、懐かしいなー。
(と思ったんですが、良く考えたらiアプリでちょっとやってた、こんちくしょうコンテキスト)

↓メモ本文は全文表示で



SWTのBrowserの拡張はこのURLで
http://hp.vector.co.jp/authors/VA000137/rss_reader/extends_browser.html

メモその1:
SWTのいろいろなのを継承しようとすると、コンパイルは通るんですけど実行時に、
org.eclipse.swt.SWTException: Subclassing not allowed
とか言われてエラーになります。
ですが、継承するクラスでこういうメソッドを実装しておくと回避できます。
protected void checkSubclass() {}

メモその2:
Browserクラスとかでも、使いたいオブジェクトがほとんどフィールド変数ですので、
リフレクションを使ってアクセスするんですけど、、、
しかし自分が継承して作る場合、親クラス(super)を指定する方法は、
super.getClass()ではなくて、this.getClass().getSuperclass()です。

↓親クラスの変数「auto」を取得
OleAutomation myAuto=null;
try {
  Class c = this.getClass().getSuperclass();
  Field f = c.getDeclaredField("auto");
  f.setAccessible(true);
  myAuto = (OleAutomation)f.get(this);
}
catch ( NoSuchFieldException nsfe) {}
catch ( IllegalAccessException iae) {}

SWTのBrowserコンポーネント拡張のコツ | 0 件のコメント |
コメントは投稿者の責任においてなされるものであり,サイト管理者は責任を負いません。


トラックバック

このエントリのトラックバックURL: http://www.hanatoyume.net/trackback.php/20090208032814348

この記事にはトラックバック・コメントがありません。