Re: [問題] 請教 JEditorPane 及 Listener的問題
※ 引述《seruze (seruze)》之銘言:
: 而,為什麼放在 keyPressed() 中,會往下跳一行呢?
: 希望大大們賜教~謝謝了~
關於這一部份的答案,在於要先了解 keyPressed, keyRelease 和 keyTyped 是什麼回事
其實當你使用鍵盤輸入一個按鍵時,會在 component 中先後產生好幾個 event:
1. keyPressed: 按鍵被按下了
2. keyTyped: 一個字母 (只有 printable 的按鍵會產生這個 event,
Ctrl, Alt, Shift 等特別按鍵不會產生 keyTyped event)
3. keyRelease: 被按著的鍵放開了
就如你一直長按著 'a' 時,在 editor 中會一直出現 'a' 一樣;當你在
component 中一直長按 'a',它會一直產生以下的 event:
keyPressed: KeyEvent.getChar() == 'a';
keyTyped: KeyEvent.getChar() == 'a';
keyPressed: KeyEvent.getChar() == 'a';
keyTyped: KeyEvent.getChar() == 'a';
keyPressed: KeyEvent.getChar() == 'a';
keyTyped: KeyEvent.getChar() == 'a';
直至你放開手,就會產生最後一個 keyReleased: KeyEvent.getChar() == 'a'
所以當你按 Enter 鍵時,其實會有兩個不同的 event 產生:
keyPressed: KeyEvent.getCode() == KeyEvent.VK_ENTER;
keyTyped: KeyEvent.getChar() == '\n'
然而真正處理輸入的程序往往都在處理 keyTyped event 時進行
所以當你只有抓取 keyPressed event 而忽略 keyTyped 的話,
跳行還是會由 component 自己去處理,也就是自己換行去了.
--
勁過呂布的勁過相簿...
http://www.pixnet.net/superlubu
亂七八糟的,不好意思 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 147.8.127.102
推
06/11 15:16, , 1F
06/11 15:16, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):