KeyListener没有回应

时间:2013-03-16 08:37:12

标签: java swing awt keylistener

我正在尝试制作一个简单的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);
    }
}

2 个答案:

答案 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 .... 
 }