2012-12-14 38 views
1

再次,大家好。我的加密代碼有更多的麻煩 - 按鈕按下似乎沒有註冊。檢測按鈕按下的代碼如下。按下時似乎沒有反應

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == enc && !in.getText().equalsIgnoreCase("")) { 
     out.setText(EncDec.e(in.getText(), 5)); 
     System.out.println("Button pressed (Encrypt)"); 
    } 
    else if(e.getSource() == dec && !in.getText().equalsIgnoreCase("")) { 
     out.setText(EncDec.d(in.getText())); 
     System.out.println("Button pressed (Decrypt)"); 
    } 
} 

這個問題確實涉及到this one,並感謝Pshemo讓我知道:)

我有System.out.println()告訴我,當按下按鈕,沒有打印時,我按到控制檯以下任一按鈕。如果您需要更多信息,只需詢問,我會很樂意添加它。

我嘗試添加addActionListener()的代碼,但我不知道如何使用它...

+0

你能告訴我們你如何設置此代碼,當你按下被執行按鈕? – Pshemo

+0

@Pshemo嘿,我不會再見到你嗎? :)但代碼都在那裏。 if語句裏面的東西。 –

+2

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。我可以根據片段想出唯一的WAG,就是你忘了將監聽器添加到按鈕中。 –

回答

2

我認爲這個問題與this one有關。

所有你需要做的是與addActionListener添加類對象(即實現ActionListener)到你的按鈕,如:

EncDecExample decExample = new EncDecExample(); 
enc.addActionListener(decExample); 
dec.addActionListener(decExample); 
enc.setVisible(true); 
dec.setVisible(true); 
+0

你是對的,這個問題與我的另一個問題有關。對不起,我應該發佈一個鏈接。並感謝TON讓我知道爲ActionListener添加什麼......我無法自己弄清楚。 –

+0

@NickHartley btw,不需要在'JComponent'上調用'setVisible(true)',它們默認是可見的。你只需要在'JDialog'和'JFrame'上調用'setVisible(true)'。 –

+0

@GuillaumePolet您可能想對我的原始問題發表評論,我可能會更快地看到它,因爲它位於頁面的頂部而不是中間。不過,感謝您的幫助。 –

2

我建議把日誌記錄語句中的條件之前得到評估,看是否動作事件其實是在甚至正確觸發。如果是,請嘗試輸出操作來源以確保正在按下正確的按鈕。否則,我會首先檢查你的兩個按鈕是否正在註冊actionListener ....「enc.addActionListener();」的附加內容。

如果看起來不錯,我會嘗試在setText行周圍放一個try/catch來查看「EncDec.e」或「EncDec.d」是否拋出某種異常。

無論如何都要嘗試一些東西! :)

+0

我剛剛在任何if語句前添加了代碼 - 我想我應該現在更新我的代碼,不是嗎?另外,我從經驗中知道e()和d()不會拋出異常,他們所做的只是將一行文本更改爲另一行文本。 'enc.addActionListener()'可能會有幫助,但是...我會嘗試它併發布我的結果。 –