2012-10-26 26 views
4

我正在寫一個程序,其中包含多個JTextFields和2個JTextAreas在輸入面板內。底部有一個提交按鈕。我建立了它,當用戶在每個字段(包括JTextAreas)中輸入內容並點擊Enter鍵時,它會更新一個文本文件,當他們按下提交按鈕時,它會更新文件,然後輸出它的新版本本地目錄。是否有KeyEvent的postActionEvent版本(專門用於JTextArea)?

如果用戶在任何字段中按Enter鍵,它會驗證其輸入,但是,當我們按下提交按鈕時,我想重新驗證所有字段。每個字段(包括JTextAreas)都有它自己的ActionListener或KeyListener(用於JTextAreas)的驗證檢查。爲JTextFields使用postActionEvent()很簡單,但是是否有類似的方法讓JTextAreas強制觸發KeyEvent?我不想複製代碼,並通過重寫JButton的ActionEvent內的這2個組件的驗證來消耗內存。

不幸的是,我不能提供一個樣本,因爲我在分類機器(PC)上編寫程序。

回答

3

你可以模擬ENTER使用keyPress(..)Robot類和keyRelease(..)方法被按下。當然,你將不得不通過所有JTextAreas組件上進行迭代,並調用requestFocusInWindow(..)其次是模擬按鍵(Exception操作略):

Robot robot = new Robot();//throws AWTException 

... 

Component[] components=getContentPane().getComponents(); 

for(int i=0;i<components.length;i++) 
{ 
    if(components[i] instanceof JTextArea) { 
     components[i].requestFocusInWindow(); 
     simulateEnter(); 
    } 
} 

public static void simulateEnter() { 
    robot.keyPress(KeyEvent.VK_ENTER); 
    robot.keyRelease(KeyEvent.VK_ENTER); 
} 
+1

再次爲信息+1,但再次仔細看看這個[link](http://docs.oracle.com/javase/7/docs/)中有關'requestFocus()'方法的Java文檔有什麼要說的。 API/JAVA/AWT/Component.html#requestFocusInWindow(布爾值))。有利於'requestFocusInWindow()'**這個方法的焦點行爲可以跨平臺一致地實現,因此強烈建議開發人員在可能的情況下通過requestFocus使用此方法。依賴於requestFocus的代碼可能在不同平臺上展示不同的焦點行爲** –

+1

@GagandeepBali +1感謝您提供非常有用的信息。已編輯 –

+0

謝謝你指點我的機器人課。這將有助於推出我的產品的功能版本。感謝您花時間幫助我! –

4

爲什麼試圖發佈KeyEvent觸發驗證,當你可以簡單地調用你的validate方法,例如,在僞代碼

myTextArea.getDocument().addDocumentListener(){ 
    //in each of the method you call validate 

} 

private function validate(){ 
    //do your validation 
} 

private function submitButtonFunction(){ 
    validate(); 
} 

還要注意的是建議的方法是使用一個DocumentListener如果你想在一個JTextComponent輸入反應。例如,您的KeyListener將不會在拖放後觸發。根據您的KeyListener的實施情況,使用複製粘貼時它可能也會失敗。

+0

+1很好的邏輯來解決 –

+0

感謝上的DocumentListener的擡起頭來,複製 - 粘貼是他們進入JTextArea的重要組成部分。儘管我沒有明確表達,那是我的錯。沒有驗證方法,只是在代碼中構建來驗證其自己的EventListener中的每個字段。每個領域需要不同的標準來統一驗證,或者有一個通用的驗證方法。這就是爲什麼我需要觸發KeyEvent(或者如果我走這條路線的話,就是DocumentListener)。感謝您抽出時間幫忙。我認爲(至少暫時)機器人課是我最好的選擇。 –

相關問題