Java swing:如何检测按下的键是否会在我的 JTextArea 中显示输出



我正在开发一个文本编辑器,我希望能够检测两种不同类型的键事件之间的差异:导致我的 JTextArea 中的文本发生明显更改的事件(即字母数字字符、回车键、符号),以及不会导致可见更改的事件(方向键、 控制键、快捷键)。我知道我可以用一个非常冗长的 switch 语句来做到这一点,但是有没有一种不那么冗长的方式来执行以下操作?

private void checkKey (java.awt.event.KeyEvent evt) {
    if (saved && /*some way to check if the text in the box has changed */) {
        editorTitle.setText(currentedit + " (Edited)");
        saved = false;
    }
}

不要使用 KeyListener。有更好的API来处理这些情况。

如果您想知道文本组件中的数据是否已更改,则应使用 DocumentListener .每当添加或删除文本时,它都会生成一个事件。

有关详细信息,请阅读 Swing 教程中有关如何编写文档侦听器的部分。

如果您想知道何时按下箭头键以调用某种操作,那么您应该使用 Key Bindings .这就是所有 Swing 组件的工作方式。KeyStroke绑定到Action

有关详细信息以及每个组件的默认键绑定的完整列表,请参阅键绑定。

快捷键也在 Swing 中使用键绑定实现。

最新更新