こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

TABキーの検出

Swingコンポーネントで、TABキーのイベントを取得する
方法を教えてください。

タブキー以外は検出できるのですが…


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TabKeyListener {

public TabKeyListener() {
JPanel panel = new JPanel();
panel.addKeyListener( new KeyListener(){
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
} );
JFrame frame = new JFrame();
frame.add(panel);
frame.setBounds(100,100,200,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
panel.requestFocusInWindow();
}

public static void main(String[] args) {
new TabKeyListener();
}

}

投稿日時 - 2009-05-26 22:03:05

QNo.4992952

暇なときに回答ください

質問者が選んだベストアンサー

これじゃないかな?
http://oshiete1.goo.ne.jp/qa4525996.html

setFocusTraversalKeysEnabled(false);
とか使えるんじゃないでしょうか。

VK_TABは、デフォルトで、フォーカスマネージャが使用しているみたいですから、そのままでは、keyPressed()で取れないみたいです。

投稿日時 - 2009-05-27 00:04:18

お礼

ありがとうございました。
実現できました。

投稿日時 - 2009-05-28 18:44:36

ANo.3

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(6)

JFrame frame = new JFrame();
frame.setFocusTraversalKeysEnabled(false);

すいません。これでした。

投稿日時 - 2009-05-27 00:35:22

java.awt.Component co = new java.awt.Component();
co.setFocusTraversalKeysEnabled(false);

こんな感じかな?

投稿日時 - 2009-05-27 00:26:23

おおっ!!すごい!!
Yanch様、ありがとうございます。

投稿日時 - 2009-05-27 00:12:27

環境によってはTABの検出がダメなことがあるようです。

参考URL:http://mylinux.blog42.fc2.com/blog-entry-268.html

投稿日時 - 2009-05-27 00:03:22

KeyEvent e
if(e.getKeyCode() == e.VK_TAB)じゃない?

参考URL:http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/awt/event/KeyEvent.html

投稿日時 - 2009-05-26 23:53:45

あなたにオススメの質問