我正在尝试制作一个简单的Java程序,但我无法从中获取任何信息。有人可以提出解决方案吗?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class KeyIns extends JFrame implements KeyListener {
public void KeyIns(){
addKeyListener(this); //==> this is why ....
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("1");
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("2");
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("2");
}
}
public class Hello {
public static void main(String[] args){
KeyIns inkey = new KeyIns();
inkey.setSize(368, 300);
inkey.setLocation(250, 250);
inkey.setVisible(true);
}
}
答案 0 :(得分:4)
KeyListener
只会在注册的组件既可关注并且具有焦点时才会响应。
另一个问题是JFrame
包含一堆其他组件,包括根窗格和内容窗格。向框架注册KeyListener
可能永远不会实现任何目标
更好的解决方案是使用Key bindings API
根据你想要实现的目标,很多事情都很重要
答案 1 :(得分:1)
问题是你永远不会调用方法
public void KeyIns(){
addKeyListener(this); //==> this is why ....
}
调用方法KeyIns()或删除单词void(使其成为构造函数),如下所示
public KeyIns(){
addKeyListener(this); //==> this is why ....
}