人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

java アプレットについての質問です。

os windows 7
eclipseで上下左右のキーとその他のキーを押した時、ウィンドウ下部に入力したキーを表示するアプレットを作りました。

しかし実行はできたのですが、キーを入力しても
下部に入力したキーが表示されません。

コードが間違えているのでしょうか?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Sample7 extends JApplet{

private JLabel lb1, lb2;

public void init(){

//コンポーネントの作成
lb1 = new JLabel("矢印キーをお選びください。");
lb2 = new JLabel();

//コンテナへの追加
add(lb1, BorderLayout.NORTH);
add(lb2, BorderLayout.SOUTH);

//リスナの登録
addKeyListener(new SampleKeyListener());
}

//リスナクラス
class SampleKeyListener extends KeyAdapter{

public void keyPressed(KeyEvent e){
String str;
int k = e.getKeyCode();

switch(k){
case KeyEvent.VK_UP:
str = "上";break;
case KeyEvent.VK_DOWN:
str = "下";break;
case KeyEvent.VK_LEFT:
str = "左";break;
case KeyEvent.VK_RIGHT:
str = "右";break;
default:
str = "他のキー";
}

lb2.setText(str + "ですね。");
}
}
}

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

KeyListenerが登録されたコンポーネント(この場合だとSample7オブジェクト)がフォーカスを所有していないのでキーイベントがリスナに通知されないのだと思います。

適切な対処方法はよく分かりませんが、例えばinit()の最後に

 addComponentListener(new ComponentAdapter() {
 @Override
 public void componentShown(ComponentEvent e) {
 requestFocusInWindow();
 }
 });

を追加すると、意図したように動くのではないでしょうか。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ