Java 我想在jlabel上实现密钥侦听器
我在JFrame对象上添加了JLabel。我想在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;
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不可用,然后无法对KeyEventspublic MyFrame扩展JFrame作出反应{
->错误:需要类、接口或枚举
@andrewhompson Oops!:-)感谢您的帮助。现在它完全编译并正常工作。这将适用于框架而不是标签如果有多个标签呢???不使用此。。。