2014-01-08 6 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, но только слушайте те объекты, которые вам нужны для прослушивания. В этом случае не будет 'if' в методе' actionPerformed'; но этот «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

Смежные вопросы