2014-01-08 46 views
0

我有一個開始按鈕和一個彈出菜單選項,可以做同樣的事情。是否可以在同一個if語句中測試兩個按鈕,還是必須爲它們編寫兩個單獨的if語句?我可以使用邏輯OR運算符來測試if語句中的兩個條件嗎?

我想要做這樣的事情:

public void actionPerformed(ActionEvent e){ 

      // The start button and the popup start menu option 
      if (e.getSource() == start)||(e.getSource() == startPopup){ 
       new Thread() { 
        @Override 
        public void run() { 
         GreenhouseControls.startMeUp(); 
        } 
       }.start(); 
+1

*「或者我必須爲它們編寫兩個單獨的if語句嗎?」*最常見的方法是編寫兩個單獨的** ActionListener對象** –

+2

我相信只有一個是更正常的ActionListener對象,但只允許它偵聽您需要它收聽的那些對象。在這種情況下,'actionPerformed'方法中不會有'if';但是這個ActionListener會監聽「開始」按鈕和「彈出開始」菜單選項。這使得它更加靈活 - 如果您決定採用相同操作添加工具欄按鈕,則不需要重寫「ActionListener」。 –

回答

6

這裏唯一的問題是括號。一個if聲明的形式爲:

if (condition) 
    body 

目前你已經有了

if (condition1) || (condition2) 
    body 

這是無效的。你只是想:

if (e.getSource() == start || e.getSource() == startPopup) 

或可能提取出的共性:

Object source = e.getSource(); 
if (source == start || source == startPopup) 

您可以添加額外的括號如果你真的想:

Object source = e.getSource(); 
if ((source == start) || (source == startPopup)) 

...但有僅僅是一個括號中的整體表達式。

+0

我以爲我已經試過這個版本了!我想我錯了。謝謝。 – LooMeenin

相關問題