您如何使用键侦听器?

问题描述 投票:1回答:1

似乎我无法让我的程序注意到我按下按钮的事实。我已经看过很多教程和图片,并且我认为这段代码应该可以,但是不会。有谁能够帮助我?

 package projekt;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

public class Projekt extends javax.swing.JFrame implements KeyListener {


public Projekt() {
    initComponents();
    this.addKeyListener(this);
}

 [...]

@SuppressWarnings("unchecked")

@Override
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_A){
        System.out.println("It works!!!"); //It won't print this
}


@Override
public void keyTyped(KeyEvent e) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void keyReleased(KeyEvent e) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
java keylistener keyevent
1个回答
0
投票

KeyEvent仅分派给具有焦点的组件。

this.addKeyListener(this);

您正在将KeyListener添加到框架。框架没有焦点。框架上显示的组件具有焦点。

我似乎无法让我的程序了解我按下按钮的事实。

您不应该使用KeyListener来侦听特定的按键事件。那是旧的AWT代码。

在Swing中,您应该使用Key BindingsKey Bindings将允许您监听按键击,即使该组件没有焦点。

阅读有关How to Use Key Bindings的Swing教程的部分,以了解更多信息。>>

© www.soinside.com 2019 - 2024. All rights reserved.