1

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

2 回答 2

4

KeyListener仅当它注册到的组件既可聚焦又具有焦点时才会响应。

另一个问题是JFrame它上面包含一堆其他组件,包括根窗格和内容窗格。将 a 注册KeyListener到框架可能永远不会实现任何目标

更好的解决方案是使用Key bindings API

根据您要实现的目标,很多事情都很重要

于 2013-03-16T08:45:46.773 回答
1

问题是您从不调用该方法

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

像这样调用方法 KeyIns() 或删除单词 void (使其成为构造函数)

 public KeyIns(){
     addKeyListener(this); //==> this is why .... 
 }
于 2013-03-16T08:44:56.807 回答