Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JAppletでキーイベント監視でエラー

初めて質問させていただきます。

現在以下の環境でJavaApplet開発しております。
windows xp professional (sp1)
iis 5.0
InternetExplorer 6.02
eclipse 3.1.1
jdk 1.5.0_07
jre 1.5.0_07

swingを使用したシステムですが
全てのswingコントロールのキーイベントを監視するために、
Toolkit.getDefaultToolkit().addAWTEventListenerを使いたいのです。
取り合えず、キーボード押下時にTextField「txtBull」に文字が追加されていく
サンプルを作ったのです。

------------------------------------------
Javaソース test.java
------------------------------------------
(略)
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class test extends JApplet {

    init(){
        (略)

        //----キーボードイベントリスナー登録
        Toolkit.getDefaultToolkit().addAWTEventListener(new CustomListener(), AWTEvent.KEY_EVENT_MASK);

    }


    //----キーボードイベントリスナー
    private class CustomListener implements AWTEventListener {
        //イベントを処理する。
        public void eventDispatched(AWTEvent event) {
            if(e.getID()==KeyEvent.KEY_PRESSED){
                 txtBuff.setText(txtBuff.getText()+e.getKeyChar());
            }
            
        }
    }

}
-------------------------------

eclipse上で実行時には、問題なく動くのですが、
実際にブラウザ上でアプレットを実行してみると、
ブラウザステータス行に
applet notinit
と表示され、

エラーダイアログ Microsoft Internet Explorer
Error in Handler
Name: TypeError
Message: オブジェクトでサポートされていないプロパティまたはメソッドです。

と表示されます。
ソースが間違っているでしょうか?


-------------------------------
from nisi

6

回答

79825

閲覧

6件の回答

評価

0

IEのオプションの詳細設定、Javaのところで使うJREバージョンはどうなっていますか?

評価

0

インターネットオプション
「詳細設定タブ」

Java(Sun)
  <applet>にJRE 1.5.0_07を使用する = "ON"

Microsoft VM
  JavaJITコンパイラの使用(再起動が必要)="ON"
  Javaコンソールの使用(再起動が必要)="OFF"
  Javaのログの使用(再起動が必要)="OFF"


となっております。

評価

0

クラス側の問題の場合、tomcatのログになんか出ませんでしたっけ?

評価

0

tomcatはiisに入れていません。

評価

0

自己resです。
アプレットの場合、
Toolkit.getDefaultToolkit().addAWTEventListener
が使用できない様な事を別のHP
(http://forum.java.sun.com/thread.jspa?threadID=445982&messageID=2336774)
で見たので、そこに書いてあるとおり、
getSystemEventQueue()を使うとうまく行きました。


init(){
  (略)
EventQueue klistener = new EventQueue() {
    protected void dispatchEvent(AWTEvent event) {
        if(event.getID()==KeyEvent.KEY_PRESSED){
                KeyEvent e = (KeyEvent)event;
                txtBuff.setText(txtBuff.getText()+e.getKeyChar());
        }//endif
        super.dispatchEvent(event);
       }
   
  };
  Toolkit.getDefaultToolkit().getSystemEventQueue().push(klistener);


}


mio様どうもありがとうございました。

評価

0

なるほど、そういうことだったんですね。
アプレットはあんまり作ってないもので、こちらも勉強になりました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。