2017-03-05 4 views
-1

wiederholen Ich kann nicht meine Nummer Schaltflächen anhängen, sagen wir, wenn ich 11 eingeben möchte, wird es nicht funktionieren es nur 1 im Textfeld zeigen. es wird mich nicht erlauben, eine andere Zahltaste zu drücken und sie an 1 oder irgendeine Zahl im Textfeld anzufügen. es hält nur und wartet, bis ich eine BetriebstasteRechner: Ich kann meine Zahlen nicht in der JTextField

private ActionListener NumberTapped = new ActionListener() { 

     @Override 
     public void actionPerformed (ActionEvent e) { 
     // JOptionPane.showMessageDialog(null, "Number tapped"); 

      JButton src = (JButton) e.getSource(); 

      String numberSelected = ""; 
      if (src.equals(btn0)) 
       numberSelected = "0"; 
      else if (src.equals(btn1)) 
       numberSelected = "1"; 
      else if (src.equals(btn2)) 
       numberSelected = "2"; 
      else if (src.equals(btn3)) 
       numberSelected = "3"; 
      else if (src.equals(btn4)) 
       numberSelected = "4"; 
      else if (src.equals(btn5)) 
       numberSelected = "5"; 
      else if (src.equals(btn6)) 
       numberSelected = "6"; 
      else if (src.equals(btn7)) 
       numberSelected = "7"; 
      else if (src.equals(btn8)) 
       numberSelected = "8"; 
      else if (src.equals(btn9)) 
       numberSelected = "9"; 
      else if (src.equals(btnA)) 
       numberSelected = "1010"; 
      else if (src.equals(btnB)) 
       numberSelected = "1011"; 
      else if (src.equals(btnC)) 
       numberSelected = "1100"; 
      else if (src.equals(btnD)) 
       numberSelected = "1101"; 
      else if (src.equals(btnE)) 
       numberSelected = "1110"; 
      else if (src.equals(btnF)) 
       numberSelected = "1111"; 




      if (operator.equals("") && operand1.equals("")) { 
       operand1 = operand1 + numberSelected; 
       outputField.setText(operand1); 
      } else if (!operator.equals("")) {//else if the operator has been set, then append the number onto operand2 
       operand2 = operand2 + numberSelected; 
       outputField.setText(operand2); 
      } 
     }  

    }; 
+1

1) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. 2) Siehe auch dieses funktionierende [Rechnerbeispiel] (http://stackoverflow.com/a/7441804/418556). Es verwendet 'ScriptEngine', um den Ausdruck im Textfeld auszuwerten. –

+0

was sind 'operator',' operator1' und 'operator2'. Kann es sein, dass "operator" leer ist, aber "operator1" nicht? –

Antwort

0
outputField.setText(operand1); 

Sie können nicht die setText drücken() -Methode. Das wird nur den bestehenden Text durch den neuen Text ersetzen.

Stattdessen müssen Sie den Text an das Textfeld "anhängen". Ein einfacher Weg, dies zu tun, ist die replaceSelection(...) Methode des JTextField.

Auschecken: How to add strings to textPane instead of setting them? für ein einfaches Beispiel, mit dem Sie einfach Ihren Code durch Wiederverwendung einer gemeinsamen Action und die replaceSelection(...) Methode können.