太原狐臭:为什么JFrame监听键盘事件时,没有反应?

来源:百度文库 编辑:高考问答 时间:2024/04/29 01:00:58
比如说我按下某个键时,本来应该出现某个动作,但完全没有反应,跟没有监听一样。
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;
import java.util.EventObject;
public class TestFrame3 {
public static void Test() {
final JFrame f = new JFrame("Test");
final JTextField tf = new JTextField("haha");

f.getContentPane().add(tf);
f.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
System.out.println("Key Released");
if(Toolkit.getDefaultToolkit().getLockingKeyState(e.VK_CAPS_LOCK)) {
tf.setVisible(false);
tf.setText("true");
tf.setVisible(true);
} else {
tf.setVisible(false);
tf.setText("false");
tf.setVisible(true);
}
}
});
f.setSize(200,200);
f.setVisible(true);
}

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

默认时,JFrame是没焦点的,就是“监听”不到键盘事件

setFocusable(true)试试

首先看不懂你的程序要实现什么
第二为什么要加final呢?
final JFrame f = new JFrame("Test");
final JTextField tf = new JTextField("haha");
也没有tf.setText("true")这个东西啊
唉,难啊