让 keyevent 监听器方法不断检查输入
Posted
技术标签:
【中文标题】让 keyevent 监听器方法不断检查输入【英文标题】:Have keyevent listener method constantly checking input 【发布时间】:2022-01-09 18:51:28 【问题描述】:我写了这个方法:
public void keyPressed(KeyEvent e)
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
if (isEncryption)
ctaTarget.setText(codModule.kodiere(this.getText()));
else
ctaTarget.setText(codModule.dekodiere(this.getText()));
else
append(""+e.getKeyChar());
它是扩展 JTextArea 的类的方法(是的,我知道扩展不是最理想的,但对于预期的应用程序,我不需要任何其他东西,至少据我所知不是)。 如果按下的键是右箭头,它应该检查输入到 JTextArea 中的每个字符并发送消息(settext 部分)。 现在,如果我将我创建的类的一个对象添加到我的 GUI 中,什么也不会发生。 我是否忘记了一些我不知道的事情?
提前致谢
【问题讨论】:
官方 Java 教程总是一个很好的资源。在这种情况下,我会推荐KeyListener tutorial 和相关教程。 能否请您提供所有必要的信息来回答这个问题?其他访问者可能会感到困惑,因为他们不一定会阅读我回答下方的 cmets。一般来说,问题应该是SSCCEs。 【参考方案1】:看来您已经正确实现了KeyListener
接口,但显然您并没有这样添加它。
你的类仍然对你的实现一无所知直到你使用Component.addKeyListener()
添加它,即在它的构造函数中像这样:
this.addKeyListener(this);
有了这个,我们告诉它使用自己的KeyListener
实现。
【讨论】:
您好,谢谢您的回答!我会尝试一下,看看它是否有效。看来我实际上并没有实现该接口。我刚刚在网上找到了一个类似的结构化代码并使用了它,但为了满足我的目的而对其进行了更改。我现在实现了接口,但我被要求也实现“keyTyped”方法。这真的有必要吗?两者有什么区别? 实现一个接口意味着实现它声明的所有方法。即使您不需要KeyListener
的其他方法,它们仍然需要实现。虽然实现很可能是空的 (public void keyTyped(KeyEvent e)
)。
告诉Java你的类实现了一个接口是通过implements
关键字完成的。仅声明类似签名的方法并不意味着您的类实现了 Java 接口,直到您使用了implements
。
成功了,谢谢!它现在按预期工作。以上是关于让 keyevent 监听器方法不断检查输入的主要内容,如果未能解决你的问题,请参考以下文章