簡體   English   中英

Java swing:如何檢測按下的鍵是否在我的JTextArea中顯示輸出?

[英]Java swing: How do i detect if the key pressed will display output in my 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教程中有關如何編寫DocumentListener的部分, 獲取更多信息。

如果您想知道何時按下箭頭鍵來調用某種動作,那么您應該使用Key Bindings 這就是所有Swing組件的工作方式。 KeyStroke綁定到Action

有關更多信息和每個組件的默認鍵綁定的完整列表,請參見鍵綁定

快捷方式也可以通過使用鍵綁定在Swing中實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM