【问题标题】:How do you use a keylistener?你如何使用keylistener?
【发布时间】:2023-03-15 02:07:01
【问题描述】:

似乎我无法让我的程序注意到我正在按下按钮这一事实。我看过很多教程和图片,我认为这段代码应该可以工作,但它不会。有谁能够帮我?

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

【问题讨论】:

  • 你发射了很多。随意发布其他代码。你确定 keyPressed 没有被调用吗?

标签: java keylistener keyevent


【解决方案1】:

KeyEvent 只分发给有焦点的组件。

this.addKeyListener(this);

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

我似乎无法让我的程序接收到我正在按下按钮的事实。

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

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

阅读 How to Use Key Bindings 上的 Swing 教程部分了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2018-12-28
    • 2021-05-19
    • 2012-06-25
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多