Re: [問題] 請教 JEditorPane 及 Listener的問題

看板java作者 (叔叔你人真好)時間16年前 (2008/06/11 15:02), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《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
文章代碼(AID): #18JtY70D (java)
討論串 (同標題文章)
文章代碼(AID): #18JtY70D (java)