我在JFrame对象上添加了JLabel。我想在JLabel上实现一个关键的监听器。我可以实现它吗?如果是,我该怎么做?
答案 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()
时。这就是你最初看到的:
五次随机击键后,
答案 1 :(得分:1)
当用户按下或释放键盘键时,具有键盘焦点的组件会触发键事件。
但JLabel不是其中一个组件。
答案 2 :(得分:1)
猜猜我有点太晚了,但在label.requestFocus();
添加key listener
之后给我label
打电话给我!