【问题标题】:No response from KeyListenerKeyListener 没有响应
【发布时间】:2013-03-05 01:05:46
【问题描述】:

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

【问题讨论】:

  • 强调@Mad - 不要使用keyListeners!

标签: java swing awt keylistener


【解决方案1】:

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

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

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

很多事情都取决于你想要达到的目标

【讨论】:

    【解决方案2】:

    问题是你从不调用方法

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多