2010-03-23 77 views
3

所以,我正在使用swing,我需要找到一個乾淨的(非CPU-hogging方式)在文本字段中引入延遲。基本上,用戶將在此字段中輸入一個數字,並且keyReleased()事件檢查輸入是否適合幾個參數,然後將該值分配給程序中的數據存儲元素。如果數據無效,則會顯示一條消息。由於每次鍵入一個字母時都會調用該例程(除非它們輸入的字符非常快),所以輸入過程變得非常煩人(因爲通常一個或兩個字符的數據不符合允許的參數)。在keyReleased()事件後引入延遲

我試着爲它設置一個計時器對象和一個計時器任務,但它似乎不能很好地工作(因爲它延遲了程序運行的線程)。等待數據達到特定長度的選項也是不可能的,因爲(如之前的狀態)輸入可以在長度上變化。

任何人有任何想法?謝謝!

回答

4

我已經做了這樣的事情,相當頻繁,我有兩個建議。

處理此問題的標準方法是使用InputVerifier類。然而,這隻在輸入組件失去焦點時才起作用 - 它旨在防止用戶在輸入字段無效時導航出輸入字段,但在此之前它不檢查。

我這樣做的另一種方法是檢查每個按鍵的有效性,但不要在無效時顯示消息。而是使用顏色來表示有效性 - 例如當其無效時爲紅色,在有效時爲黑色。這不像信息那樣具有侵擾性。您可以使用工具提示來提供更詳細的反饋。

你也可以結合這些方法。

+0

做驗證,通知用戶散焦錯誤絕對是我首選的方法。 +1。 – aperkins 2010-03-23 20:36:35