Java 我想在jlabel上实现密钥侦听器

Java 我想在jlabel上实现密钥侦听器,java,swing,jlabel,keylistener,Java,Swing,Jlabel,Keylistener,我在JFrame对象上添加了JLabel。我想在JLabel上实现一个键侦听器。我可以实施它吗?如果是,我该怎么做?您可能不想在JLabel上添加keylister。如果您将其添加到JFrame 假设您有以下代码结构,那么它应该可以工作: public class MyFrame extends JFrame { private JLabel jLab; //...fields, getters, setters whatever... private int i;

我在JFrame对象上添加了JLabel。我想在JLabel上实现一个键侦听器。我可以实施它吗?如果是,我该怎么做?

您可能不想在
JLabel
上添加
keylister
。如果您将其添加到
JFrame

假设您有以下代码结构,那么它应该可以工作:

public class MyFrame extends JFrame {
    private JLabel jLab;
    //...fields, getters, setters whatever...
    private int i;
    public MyFrame()
    {
        i = 0;
        jLab = new JLabel("Example");
        addKeyListener(new KeyListener() {
            @Override
            public void keyPressed(KeyEvent ke) {
                //doSomething(); - this may create confusion.
            }
            @Override
            public void keyReleased(KeyEvent ke) {
                //doSomething(); - this may create confusion.
            }
            @Override
            public void keyTyped(KeyEvent ke) {
                doSomething();
            }
        });
        add(jLab);
        pack();
        setVisible(true);
    }

    private void doSomething() {
        i++;
        jLab.setText(i + "");
    }
}
还有,别忘了导入

import javax.swing.*;
import java.awt.event.*;

结果:在
main()
方法中创建新的
MyFrame
时。这是您首先看到的:

在五次随机按键之后


当用户按下或释放键盘键时,具有键盘焦点的组件将触发按键事件。


但是JLabel不是这些组件中的一个。

我想我有点晚了,但是调用
label.requestFocus()键侦听器添加到
标签后的code>对我来说很有用

你不能那样做。请看这里:KeyListener不是可聚焦的JComponents,不是为这个想法而设计的,KeyListener不是在JLabels中实现的,暂时忘记你想要什么。您试图为用户提供什么功能?这听起来很经典。你想用这个监听器做什么?请确保发布的代码确实编译好了。即使使用导入,也不能。请删除此答案,JLabel(和JFrame)无法接收任何KeyEvents,simple不可用,然后无法对KeyEvents
public MyFrame扩展JFrame作出反应{
->
错误:需要类、接口或枚举
@andrewhompson Oops!:-)感谢您的帮助。现在它完全编译并正常工作。这将适用于框架而不是标签如果有多个标签呢???不使用此。。。