javaを勉強している者です。
KeyListenerとActionListenerをインターフェースにして、keyPressedメソッドと、actionPerformedにいくつか機能を実装しているのですが、actionPerformedメソッドが動く前は、keyPressedメソッドがちゃんと動くのですが、actionPerformedメソッドを動かしてからだと、keyPressedが動かなくなる(キーを押しても反応しなくなる)のですが、何かよくある原因というのはあるのでしょうか?(keyPressedのようなメソッドが途中で動かなくなることに)
やはりコードを見ないとなんとも言えないでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>actionPerformedメソッドを動かしてからだと、keyPressedが動かなくなる(キーを押しても反応しなくなる)
単純な想像ですが・・・。
KeyListenerは、どこに実装していますか? たとえば、Frameなどのウインドウに組み込んでいるのでしょうか。また、ActionListenerはボタンに組み込んでいる、ということじゃないでしょうか。
ボタンをクリックした後、フレームの何もない部分をクリックすると、再度キーイベントが認識されるようになりませんか。
最初に起動した段階では、キーを押すと(何もコンポーネントが選択されていないため)Frame自体にキーイベントが送られKeyListenerが機能する。ボタンをクリックすると、そのボタンが選択された状態になるために、キーイベントが(Frameではなく)ボタンに送られるようになるため、FrameのKeyListenerがキーイベントを受け取れなくなる、というようなことでは・・・と、まったくの想像ですが。
回答ありがとうございます。
KeyListenerはフレームに実装しています。大まかには下記のような感じです。
public class MainPanel extends JPanel implements KeyListener, ActionListener{
public MainPanel(){
addKeyListener(this);
JButton button = new button("");
button.addActionListener(this);
}
}
ボタンにActionListenerを実装して、パネル自体にKeyListenerを実装しています。ボタンをクリックする前は、キーリスナーが動くのですが、ボタンをクリックした後は全くキーを感知していないようなのです。
よろしくお願いします。
No.2
- 回答日時:
/**
左クリックと@キーを同時に連打すると、めちゃめちゃ早くなる。
ちょっとワロタ。
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Suburi extends JFrame implements ActionListener,KeyListener{
private JLabel label;
private JButton button;
private Boolean boo;
private int counter;
public Suburi(){
super("Swing");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = getContentPane();
label = new JLabel("Suburi");
contentPane.add(label,BorderLayout.NORTH);
button = new JButton("Racket");
contentPane.add(button,BorderLayout.SOUTH);
button.addActionListener(this);
button.addKeyListener(this);
boo = false;
counter = 0;
setSize(500,500);
// pack();
}
static public void main(String ... mojiretsu){
Suburi suburi = new Suburi();
suburi.setVisible(true);
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource().equals(button)){
if(boo == false){
label.setText(String.valueOf(counter++));
button.setText("Event Handler!");
boo = true;
}else{
label.setText(String.valueOf(counter++));
button.setText("Event Handler!!");
boo = false;
}
}
}
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode() == KeyEvent.VK_AT){ // @キー
label.setText(String.valueOf(counter++));
button.setText("Event Handler!!!");
}
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
参考URL:http://www.tohoho-web.com/java/listener.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
mainメソッドのthrows節で設定...
-
C#で右からnカラム目に文字を挿...
-
ExcelVBA Findメソッドで検索の...
-
エクセルVBAにおけるON TIMEメ...
-
worksheets & rows メソッドは...
-
You Tubeの音楽をMac Book Proへ
-
「CA2202: オブジェクトを複数...
-
sprintfは古いのか。
-
VBAのWorkbook_BeforeSaveイベ...
-
InetAddress#getHostNameについ...
-
VB.netで、シリアル通信のタイ...
-
PDFファイルから別ウィンドウで...
-
エクセルのマクロでプリンタを...
-
2つの項目の和の消費税の計算...
-
サーブレット GETからPOST送信
-
Excel VBA でExcelを終了したい...
-
「タイプ初期化子が例外をスロ...
-
C#でフォームのオブジェクト名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
final修飾子を使っているのに、...
-
javascriptからjavaを呼び出したい
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
vbaエクセルマクロ RemoveDupli...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
エクセルVBAにおけるON TIMEメ...
-
Refreshメソッドの使い方
-
onClickで関数呼出し後に、結果...
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Application.Wait の参照設定
-
Excel VBA でExcelを終了したい...
-
配列のメソッド
-
エクセルのマクロでプリンタを...
-
Excel VBA シェイプの原型のサ...
おすすめ情報