今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

JDIC をちょっとだけ触る

添付のデモに含まれている Browser.java をのぞいてみる。

    public Browser() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Sun の中にも JBuilder ユーザがいるらしい。この後に続いているのは、明らかに JBuilder が自動生成したコードだったりする。
ひととおりコードを確認したところ、SimpleBrowser と Tray 以外はすべて JBuilder が使われていた。Macユーザもいることだし、JBuilder ユーザがいても不思議じゃないけど。
javadoc を見てみる。

java.lang.Object
  └java.awt.Component
      └java.awt.Canvas
          └org.jdesktop.jdic.browser.WebBrowser

あれれ? AWT の Canvas を継承してるよ。なのに、

public class Browser extends JPanel {
    (cut)
    JPanel jBrowserPanel = new JPanel();

    WebBrowser webBrowser;
    (cut)
    private void jbInit() throws Exception {
        (cut)
        jBrowserPanel.add(webBrowser, BorderLayout.CENTER);
        (cut)
    }

とかやってたりする。おーい、swing と AWT を混在させちゃいけないんだってばさ。
つか、なんで org.jdesktop.jdic.browser.WebBrowser って extends Canvas なのよ。extends JComponent にしなきゃいかんのでは?
もしかすると、native なレンダリングエンジンを使って描画するには、native コンポーネントじゃなきゃイカンって制限があったりするんかも。