2013-07-25 5 views
1

У меня есть код калькулятора и проблема:Как остановить вызов метода из другого метода в java?

public void valueCheck(String value,JToggleButton button) { 
     if(values.size()>2) 
     { 
      processValue(value); 
      button.setSelected(false); 
      JOptionPane.showMessageDialog(this, "You cant click 3 buttons at the same time.."); 
     } 
    } 

Существует метод valueCheck и:

public boolean evenOdd(JToggleButton buton) 
    { 
     if(values.size()==2) 
     { 
     System.out.println((String)values.get(0)); 
     System.out.println((String)values.get(1)); 

     String number1 = new String(values.get(0)); 
     String number2 = new String(values.get(1)); 

     if(evenNumbers.contains(number1)) 
     { 
      if(evenNumbers.contains(number2)) 
      { 
       processValue(number1); 
       processValue(number2); 
      } 
      else if(oddNumbers.contains(number2)) 
      { 
       buton.setSelected(false); 
       JOptionPane.showMessageDialog(this, "You cant click an even and an odd number at the same time.."); 

      } 
     } 
     else if(oddNumbers.contains(number1)) 
     { 
      if(oddNumbers.contains(number2)) 
      { 
       processValue(number1); 
       processValue(number2); 
      } 
      else if(evenNumbers.contains(number2)) 
      { 
       buton.setSelected(false); 
       JOptionPane.showMessageDialog(this, "You cant click an even and an odd number at the same time.."); 
      } 
     } 
     } 
     return false; 
    } 

есть метод EvenOdd.

Моей проблема: я не хочу метод valueCheck запустить для метода EvenOdd method.When EvenOdd работает valueCheck должен быть остановлен calling.Is есть событие, чтобы сделать это, я хочу, чтобы прекратить называть valueCheck когда EvenOdd работает

?

Вот мой весь код.

package tr.com.bites; 
import com.sun.org.apache.xml.internal.utils.StopParseException; 
import java.util.List; 
import java.util.ArrayList; 
import javax.swing.JOptionPane; 
import javax.swing.JToggleButton; 
public class CalculatorView_1 extends javax.swing.JFrame { 
    JToggleButton[] buttons = new JToggleButton[4]; 
    public CalculatorView_1() { 
     initComponents(); 
     buttons[0]=jToggleButton12; 
     buttons[1]=jToggleButton11; 
     buttons[2]=jToggleButton10; 
     buttons[3]=jToggleButton13; 
    } 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jToggleButton1 = new javax.swing.JToggleButton(); 
     jToggleButton2 = new javax.swing.JToggleButton(); 
     jToggleButton3 = new javax.swing.JToggleButton(); 
     jToggleButton4 = new javax.swing.JToggleButton(); 
     jToggleButton5 = new javax.swing.JToggleButton(); 
     jToggleButton6 = new javax.swing.JToggleButton(); 
     jToggleButton7 = new javax.swing.JToggleButton(); 
     jToggleButton8 = new javax.swing.JToggleButton(); 
     jToggleButton9 = new javax.swing.JToggleButton(); 
     jToggleButton10 = new javax.swing.JToggleButton(); 
     jToggleButton11 = new javax.swing.JToggleButton(); 
     jToggleButton12 = new javax.swing.JToggleButton(); 
     jToggleButton13 = new javax.swing.JToggleButton(); 
     jToggleButton14 = new javax.swing.JToggleButton(); 
     jTextField1 = new javax.swing.JTextField(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jToggleButton1.setText("1"); 
     jToggleButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton1ActionPerformed(evt); 
      } 
     }); 

     jToggleButton2.setText("2"); 
     jToggleButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton2ActionPerformed(evt); 
      } 
     }); 

     jToggleButton3.setText("3"); 
     jToggleButton3.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton3ActionPerformed(evt); 
      } 
     }); 

     jToggleButton4.setText("5"); 
     jToggleButton4.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton4ActionPerformed(evt); 
      } 
     }); 

     jToggleButton5.setText("4"); 
     jToggleButton5.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton5ActionPerformed(evt); 
      } 
     }); 

     jToggleButton6.setText("6"); 
     jToggleButton6.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton6ActionPerformed(evt); 
      } 
     }); 

     jToggleButton7.setText("8"); 
     jToggleButton7.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton7ActionPerformed(evt); 
      } 
     }); 

     jToggleButton8.setText("7"); 
     jToggleButton8.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton8ActionPerformed(evt); 
      } 
     }); 

     jToggleButton9.setText("9"); 
     jToggleButton9.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton9ActionPerformed(evt); 
      } 
     }); 

     jToggleButton10.setText("*"); 
     jToggleButton10.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton10ActionPerformed(evt); 
      } 
     }); 

     jToggleButton11.setText("-"); 
     jToggleButton11.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton11ActionPerformed(evt); 
      } 
     }); 

     jToggleButton12.setText("+"); 
     jToggleButton12.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton12ActionPerformed(evt); 
      } 
     }); 

     jToggleButton13.setText("/"); 
     jToggleButton13.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton13ActionPerformed(evt); 
      } 
     }); 

     jToggleButton14.setText("="); 
     jToggleButton14.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jToggleButton14ActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(24, 24, 24) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jToggleButton8) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton7) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton9)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jToggleButton5) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton4) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton6)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jToggleButton1) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton2) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton3))) 
       .addGap(34, 34, 34) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
        .addComponent(jToggleButton12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jToggleButton11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jToggleButton10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jToggleButton13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jToggleButton14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(78, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(36, 36, 36) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(jToggleButton12) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton11) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jToggleButton10)) 
        .addGroup(layout.createSequentialGroup() 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jToggleButton1) 
          .addComponent(jToggleButton2) 
          .addComponent(jToggleButton3)) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jToggleButton5) 
          .addComponent(jToggleButton4) 
          .addComponent(jToggleButton6)) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jToggleButton8) 
          .addComponent(jToggleButton7) 
          .addComponent(jToggleButton9)))) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(jToggleButton13) 
       .addGap(41, 41, 41) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jToggleButton14) 
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addContainerGap(90, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("1"); 
     valueCheck("1",jToggleButton1); 
     evenOdd(jToggleButton1); 
    }            

    private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("2"); 
     valueCheck("2",jToggleButton2); 
     evenOdd(jToggleButton2); 
    }            

    private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("3"); 
     valueCheck("3",jToggleButton3); 
     evenOdd(jToggleButton3); 
    }            

    private void jToggleButton5ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("4"); 
     valueCheck("4",jToggleButton5); 
     evenOdd(jToggleButton5); 
    }            

    private void jToggleButton4ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("5"); 
     valueCheck("5",jToggleButton4); 
     evenOdd(jToggleButton4); 
    }            

    private void jToggleButton6ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("6"); 
     valueCheck("6",jToggleButton6); 
     evenOdd(jToggleButton6); 
    }            

    private void jToggleButton8ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("7"); 
     valueCheck("7",jToggleButton8); 
     evenOdd(jToggleButton8); 
    }            

    private void jToggleButton7ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("8"); 
     valueCheck("8",jToggleButton7); 
     evenOdd(jToggleButton7); 
    }            

    private void jToggleButton9ActionPerformed(java.awt.event.ActionEvent evt) {            
     processValue("9"); 
     valueCheck("9",jToggleButton9); 
     evenOdd(jToggleButton9); 
    }            

    private void jToggleButton12ActionPerformed(java.awt.event.ActionEvent evt) {             
     processValue("+"); 
     for(JToggleButton b: buttons) 
      b.setSelected(false); 
     if(values.contains("+")) 
      jToggleButton12.setSelected(true); 
    }            

    private void jToggleButton11ActionPerformed(java.awt.event.ActionEvent evt) {             
     processValue("-"); 
     for(JToggleButton b: buttons) 
      b.setSelected(false); 
     if(values.contains("-")) 
      jToggleButton11.setSelected(true); 
    }            

    private void jToggleButton10ActionPerformed(java.awt.event.ActionEvent evt) {             
     processValue("*"); 
     for(JToggleButton b: buttons) 
      b.setSelected(false); 
     if(values.contains("*")) 
      jToggleButton10.setSelected(true); 
    }            

    private void jToggleButton13ActionPerformed(java.awt.event.ActionEvent evt) {             
     processValue("/"); 
     for(JToggleButton b: buttons) 
      b.setSelected(false); 
     if(values.contains("/")) 
      jToggleButton13.setSelected(true); 
    }            

    private void jToggleButton14ActionPerformed(java.awt.event.ActionEvent evt) {             
     long total=-1; 
     int firstNumber=-1; 
     int secondNumber=-1; 
     String process=null; 
     for (String secilenler : values) { 
      if(secilenler.equals("+")) 
       process="+"; 
      else if(secilenler.equals("-")) 
       process="-"; 
      else if(secilenler.equals("*")) 
       process="*"; 
      else if(secilenler.equals("/")) 
       process="/";  
      else 
      { 
       if(firstNumber==-1) 
        firstNumber= Integer.parseInt(secilenler); 
       else 
        secondNumber= Integer.parseInt(secilenler); 
      } 
     } 
      if(process.equals("+")) 
       total=firstNumber+secondNumber; 
      else if(process.equals("-")) 
       total=firstNumber-secondNumber; 
      else if(process.equals("*")) 
       total=firstNumber*secondNumber; 
      else 
       total=firstNumber/secondNumber; 
      jTextField1.setText(""+total); 
    }            

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]){ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new CalculatorView_1().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JToggleButton jToggleButton1; 
    private javax.swing.JToggleButton jToggleButton10; 
    private javax.swing.JToggleButton jToggleButton11; 
    private javax.swing.JToggleButton jToggleButton12; 
    private javax.swing.JToggleButton jToggleButton13; 
    private javax.swing.JToggleButton jToggleButton14; 
    private javax.swing.JToggleButton jToggleButton2; 
    private javax.swing.JToggleButton jToggleButton3; 
    private javax.swing.JToggleButton jToggleButton4; 
    private javax.swing.JToggleButton jToggleButton5; 
    private javax.swing.JToggleButton jToggleButton6; 
    private javax.swing.JToggleButton jToggleButton7; 
    private javax.swing.JToggleButton jToggleButton8; 
    private javax.swing.JToggleButton jToggleButton9; 
    // End of variables declaration     
    private List<String> values = new ArrayList<String>(); 
    private List<String> evenNumbers = new ArrayList<String>(); 
    { 
     evenNumbers.add("2"); 
     evenNumbers.add("4"); 
     evenNumbers.add("6"); 
     evenNumbers.add("8"); 
    } 
    private List<String> oddNumbers = new ArrayList<String>(); 
    { 
     oddNumbers.add("1"); 
     oddNumbers.add("3"); 
     oddNumbers.add("5"); 
     oddNumbers.add("7"); 
     oddNumbers.add("9"); 
    } 
    public void processValue(String strValue) 
    { 
     if(values.contains(strValue)) 
      values.remove(strValue); 
     else 
      values.add(strValue); 
    } 

    public void valueCheck(String value,JToggleButton button) { 
     if(values.size()>2) 
     { 
      processValue(value); 
      button.setSelected(false); 
      JOptionPane.showMessageDialog(this, "You cant click 3 buttons at the same time.."); 
     } 
    } 
    public boolean evenOdd(JToggleButton buton) 
    { 
     if(values.size()==2) 
     { 
     System.out.println((String)values.get(0)); 
     System.out.println((String)values.get(1)); 

     String number1 = new String(values.get(0)); 
     String number2 = new String(values.get(1)); 

     if(evenNumbers.contains(number1)) 
     { 
      if(evenNumbers.contains(number2)) 
      { 
       processValue(number1); 
       processValue(number2); 
      } 
      else if(oddNumbers.contains(number2)) 
      { 
       buton.setSelected(false); 
       JOptionPane.showMessageDialog(this, "You cant click an even and an odd number at the same time.."); 

      } 
     } 
     else if(oddNumbers.contains(number1)) 
     { 
      if(oddNumbers.contains(number2)) 
      { 
       processValue(number1); 
       processValue(number2); 
      } 
      else if(evenNumbers.contains(number2)) 
      { 
       buton.setSelected(false); 
       JOptionPane.showMessageDialog(this, "You cant click an even and an odd number at the same time.."); 
      } 
     } 
     } 
     return false; 
    } 
} 
+2

У вас нет многопоточности, поэтому, когда 'evenOdd' работает, ничего больше. Итак, что вы имеете в виду? –

+0

Я имею в виду, что функция метода valueCheck не нажимает на 3 кнопки в то же время. Работа метода edd не щелкает четным и нечетным числом в одно и то же время. Например, я нажал 2, а затем 3. Будет предупреждение что «вы не можете щелкнуть четным и нечетным вместе», тогда я хочу щелкнуть четное число, такое как 4,6,8. Теперь будет предупреждение, что «вы не можете нажать 3 кнопки вместе». Затем я не могу нажать кнопку number.So эти методы не могут работать правильно в одно и то же время. – cansukartal

+0

Можете ли вы поделиться своей целевой целью, которую вам нужно достичь? –

ответ

1

Ваша проблема не связана с многопотоковой обработкой. Multithreading включает в себя несколько threads, таким образом, само слово. В вашей ситуации то, что вы хотите сделать, может быть достигнуто с помощью простого оператора if-else и правильного возвращаемого значения из задействованных методов.

Я вижу, что ваш метод evenOdd() уже возвращает boolean. Вы можете воспользоваться этим. После отображения вашего сообщения об ошибке в evenOdd(), верните значение false. Затем, когда нажата кнопка переключения, проверьте, возвращает ли значение evenOdd() значение true, затем вызовите valueCheck(), иначе, если он вернет false (отобразилось сообщение об ошибке), не вызывайте его.

if(evenOdd(jToggleButton1)) 
    valueCheck("1", jToggleButton1); 

Кроме того, ваши текущие имена методов сбивают с толку. Попробуйте сыграть так, как вы называете ваши методы. Методы должны быть названы таким образом, что, когда вы это видите, вы уже знаете, что он делает.

+0

Я сделал метод evenOdd() верным false, но я не мог понять другую часть вашего ответа. Где я должен использовать эту if-else и как это работает? – cansukartal

+0

Позвольте мне пояснить, что вы хотите не вызывать 'valueCheck()', когда 'evenOdd()' показывает вам сообщение об ошибке. Нет? – Bnrdo

+0

Вы правы, это именно то, что я хочу – cansukartal

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