我想在jlabel上实现Key Listener

时间:2014-03-22 10:15:03

标签: java swing jlabel keylistener

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

3 个答案:

答案 0 :(得分:2)

您可能不想在KeyListener上添加JLabel。如果你把它添加到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

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

结果:在MyFrame方法中创建新的main()时。这就是你最初看到的:

Starting

五次随机击键后,

After 5

答案 1 :(得分:1)

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

但JLabel不是其中一个组件。

答案 2 :(得分:1)

猜猜我有点太晚了,但在label.requestFocus();添加key listener之后给我label打电话给我!