2010-12-01 113 views
0

我寫了兩個方法來獲取並返回一個字符串。一個從英語轉換成拉丁語,反之亦然。我有兩個JTextFields(一個英文和另一個Piglatin-用於用戶輸入)。同樣,兩個JButtons:「To English」和「To Pig Latin」。我很困惑如何使用動作偵聽器。看起來可能只有一個ActionListener執行所有你想要的「點擊」,但是我很困惑它是如何知道你按下了哪個按鈕的。我本能地想爲每個按鈕創建兩個ActionListeners,從而當點擊按鈕時,相應的代碼將被執行。ActionListener如何知道按下了哪個按鈕?

是否有人可以向我展示和/或向我解釋這一切是如何工作的? 總結我所理解的一切至今:

  1. 類型的英語單詞到JTextField中
  2. 點擊「豬拉丁」按鈕
  3. 的ActionListener莫名其妙地知道「豬拉丁」按鈕被點擊並執行toPigLatin ()方法將JTextField文本作爲參數。 (假設JTextField輸入自動被認爲是一個String類型,真的還沒有那麼遠)。
  4. 從該方法返回的字符串被輸出到豬拉丁文JTextField供用戶查看。

謝謝大家!

我找到了我要找的東西。對不起,我把它發佈在錯誤的論壇上,並感謝將它遷移到它所屬的位置......我打算在此處發佈它! :) 對於任何人試圖弄清楚如何使它每個按鈕執行一個代碼塊時單擊使用以下:[ActionEvent] .getActionCommand()。equals(「[Name of Button]」) 這是我的最終解決方案如果有人感興趣:

public void actionPerformed(ActionEvent e) { 
    if (e.getActionCommand().equals("To Pig Latin")){ 
     String english = English.getText(); 
     PigLatin.setText(englishToPigLatin(english)); 
    } 
    if (e.getActionCommand().equals("To English")){ 
     String piglatin = PigLatin.getText(); 
     English.setText(pigLatinToEnglish(piglatin)); 
    } 
    String piggyCount = Integer.toString(pigCount); 
    countP.setText("Number of Successful Word Translations: English: "+piggyCount+" "); 
    String englishyCount = Integer.toString(englishCount); 
    countE.setText(String.format("Pig-Latin: "+englishyCount)); 
} 

再次感謝所有試圖幫助我的人!

+2

更適合[Stack Overflow](http://stackoverflow.com)。 – 2010-12-01 23:17:08

回答

0

在ActionListeners here上有一個很好的教程。對兩個按鈕使用同一監聽器的最簡單方法是在ActionEvent上調用e.getActionCommand()傳遞給actionPerformed函數。這將返回一個帶有按鈕標籤的字符串,然後您可以在if語句中使用該字符串執行相應的操作。

相關問題