2013-03-16 142 views
1

我正在尝试创建一个简单的Java程序,但是我无法从中获取任何内容。任何人都可以提出解决方案KeyListener没有响应

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

强调将此事@ Mad - __不会使用keyListeners! – kleopatra 2013-03-16 11:36:53

回答

1

的问题是,你永远不会调用方法

public void KeyIns(){ 
    addKeyListener(this); //==> this is why .... 
} 

要么调用方法KeyIns()或删除单词无效(使之成为构造函数)这样

public KeyIns(){ 
    addKeyListener(this); //==> this is why .... 
} 
4

KeyListener只有当它注册的组件都可以聚焦并且具有焦点时才会响应。

另一个问题是JFrame包含一堆其他组件,包括根窗格和内容窗格。注册一个KeyListener的框架很可能永远不会实现任何

一个更好的解决办法是使用Key bindings API

很多基于它是什么,你正在努力实现

+1

@ user2176567错误的决定,再次阅读此答案 – mKorbel 2013-03-16 10:10:11