Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
表示しない

Q)TAB$B%-!<2!2<$rJa$i$($?$$!%(B

閲覧: 2 回
最初の未読メッセージにスキップ

Kiyomi Yamazaki

未読、
2003/12/08 7:41:122003/12/08
To:
こんにちは、ヤマザキともうします.

早速ですが質問です.

現在、JDK 1.3を使用してIEのみを対象とした
アプレットを作成していますが、キーイベントでTABキーが
通知されません.

enableEvent()でキーイベントを有効にして、
processKeyEventを実装しています.
TABキー以外が押下されると、processKeyEvent()が呼ば
れるのですが、TABキーでは呼ばれません.

確かにTABキーはコントロールのフォーカス移動に使用さ
れているようですが、アプレットでTABキーを捕らえることは
できないのでしょうか?!

どなたか、情報お持ちでしたら、教えていただければ幸です.

以上、よろしくお願いいたします.


Iwao Watanabe

未読、
2003/12/11 1:41:332003/12/11
To:
こんにちは。

"Kiyomi Yamazaki" <kiy...@sendai.ai-com.co.jp> wrote
in message news:br19pm$ms8$1...@nn-tk103.ocn.ad.jp...

> 現在、JDK 1.3を使用してIEのみを対象とした
> アプレットを作成していますが、キーイベントでTABキーが
> 通知されません.

(snip)

Microsoft Windows の Internet Explorer でJDK1.3ということなら
Sunのプラグインを利用されているということでしょうか。

java.applet.Applet クラスのPeerな実装は
TABキーを始めとするほとんどのキーに反応するようですが、
それとは別の java.awt.Component のPeer は
実装によって特定のキー入力が反応しない
ということが昔から知られています。



> enableEvent()でキーイベントを有効にして、
> processKeyEventを実装しています.
> TABキー以外が押下されると、processKeyEvent()が呼ば
> れるのですが、TABキーでは呼ばれません.

実際に試されたコードが示されていないので単なる予測ですが
反応しないのならそういうものでしょう。

TABコードをどうしても取得したければ、
java.awt.Panel か java.awt.Canvas あたりを使って
自分で適当なGUIを作るしかないです。


Kiyomi Yamazaki

未読、
2003/12/12 2:09:442003/12/12
To:
Iwao Watanabeさん、情報ありがとうございます.

> Microsoft Windows の Internet Explorer でJDK1.3ということなら
> Sunのプラグインを利用されているということでしょうか。

●そのとおりです.

> 実際に試されたコードが示されていないので単なる予測ですが
> 反応しないのならそういうものでしょう。
●はしょると、次のようなソースです.

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class test4 extends Applet
{
public void init()
{
super.init();
enableEvents( AWTEvent.KEY_EVENT_MASK );
}
public void processKeyEvent( KeyEvent e )
{
System.out.println( "キーイベント" );
}
public void paint( Graphics gs ) {
}
public void update( Graphics gs ) {
}
}

TABキー以外では、『キーイベント』と表示されますが、TABキーでは
表示されません.

あきらめるしかないのでしょうか...


Iwao Watanabe

未読、
2003/12/16 3:38:202003/12/16
To:
こんにちは。

"Kiyomi Yamazaki" <kiy...@sendai.ai-com.co.jp> wrote in message news:brb7qs$djb$1...@nn-tk102.ocn.ad.jp...

>
> > Microsoft Windows の Internet Explorer でJDK1.3ということなら
> > Sunのプラグインを利用されているということでしょうか。
> ●そのとおりです.

私の手元で次のコードを Windows版 Sun J2SE の
java version "1.4.1_02-er" の状態で試してみました。

public class Applet3 extends java.applet.Applet {
public void init() {
enableEvents( java.awt.AWTEvent.KEY_EVENT_MASK );
}
public void processKeyEvent( java.awt.event.KeyEvent e ) {
System.out.println(e);
}
}

appletviewer、IE プラグインのどちらも
「a」「b」「c」とタイプすると、コンソールに次のように表示されます。
ちなみに「tab」を押しても何も反応しません。

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65,keyChar='a',keyLocation=KEY_LOCAT
ION_STANDARD] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyChar='a',keyLocation=KEY_LOCATION
_UNKNOWN] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65,keyChar='a',keyLocation=KEY_LOCA
TION_STANDARD] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=66,keyChar='b',keyLocation=KEY_LOCAT
ION_STANDARD] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyChar='b',keyLocation=KEY_LOCATION
_UNKNOWN] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=66,keyChar='b',keyLocation=KEY_LOCA
TION_STANDARD] on panel0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=67,keyChar='c',keyLocation=KEY_LOCAT
ION_STANDARD] on panel0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyChar='c',keyLocation=KEY_LOCATION
_UNKNOWN] on panel0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=67,keyChar='c',keyLocation=KEY_LOCA
TION_STANDARD] on panel0

同じクラスファイルをIE内蔵のMicrosoft VM 5.0.0 で試してみると
期待したtabキーのイベントが取得できます。

VMの実装によって違いがあるとみなすしかないですね。

Kiyomi Yamazaki

未読、
2003/12/17 5:57:562003/12/17
To:
Iwao Watanabeさん、返信ありがとうございます.

>
> 私の手元で次のコードを Windows版 Sun J2SE の
> java version "1.4.1_02-er" の状態で試してみました。
>
> public class Applet3 extends java.applet.Applet {
> public void init() {
> enableEvents( java.awt.AWTEvent.KEY_EVENT_MASK );
> }
> public void processKeyEvent( java.awt.event.KeyEvent e ) {
> System.out.println(e);
> }
> }
>
> appletviewer、IE プラグインのどちらも
> 「a」「b」「c」とタイプすると、コンソールに次のように表示されます。
> ちなみに「tab」を押しても何も反応しません。
●ですよね~

> 同じクラスファイルをIE内蔵のMicrosoft VM 5.0.0 で試してみると
> 期待したtabキーのイベントが取得できます。
>
> VMの実装によって違いがあるとみなすしかないですね。

●そうなんですか.

結局、ちぐはぐな環境になりますが、徐々(?)にSDK 1.4へ移行する
することが認められ、その最初として今回のアプレットを1.4で作成
しました. で、もって1.4のメソッド
setFocusTraversalKeys( KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
Collections.EMPTY_SET );
setFocusTraversalKeys( KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
Collections.EMPTY_SET );
を使用して、強引に解決ということにしました.

JREはもともと1.4だったので...

以上、大変ありがとうございました.


新着メール 0 件