2011-10-06 19 views
0

我正在用Java創建一個簡單的文本編輯器,並試圖添加撤銷和重做功能。我希望程序能夠確定用戶是否停止在文本區域中鍵入,而不僅僅是他們是否輸入了字符。程序應該只保存一個字符,只有它是他們輸入的唯一字符。你會如何去做這件事?Java:確定用戶是否已停止輸入

+0

它是一個好主意。你知道javax.swing API嗎? – adatapost

回答

2

定義「停止鍵入」。基本上,我會考慮使用計時器。採取每個字符事件,添加一個計數器和一個計時器,每次有Key Up事件時重新啓動。當足夠的時間過去時,定義「停止輸入」。

然後想想如果你真的想要這樣做,因爲這聽起來像是什麼東西,會讓我絕對火把手和草撬鎖到開發者家瘋了。

+1

很好的建議,以及有關想着如果真的是你,或者更重要的是,你的用戶想要什麼好點。要非常小心地自動化事情太多。你不想結束使用類似Word的東西,當你觸發不明確的規則時,它似乎會隨機地重新格式化文本。 –

0

某處一個主類;

public static long lastKeyPressTime = 0l; 

在您的KeyListener接口中;

public void keyPressed(KeyEvent evt) { 
    lastKeyPressTime = System.currentTimeMillis(); 
} 

最後,在一個適當的,快速運行的線程中;

if((system.currentTimeMillis() - lastKeyPressTime) > 2000) { 
    //do something, because the user hasnt typed for two seconds 
} 
+0

這不是線程安全的。 'lastKeyPressTime'或許應該被打上'volatile'這裏,由「快速運行」線程的觀察,同時寫入它從EDT。 – zmb