2017-03-05 24 views
-1

我不能让我的数字按钮附加自己,可以说如果我想输入11,它将无法工作,它只在文本字段中显示1。它不会让我按另一个数字按钮,并将其附加到文本字段中的1或任何数字。它只是停止并等待,直到我按下一个按钮,操作计算器:我无法让我的号码在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)为了更好地提供帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 2)另请参阅此工作[计算器示例](http://stackoverflow.com/a/7441804/418556)。它使用'ScriptEngine'来评估文本字段中的表达式。 –

+0

什么是“运营商”,“运营商1”和“运营商2”。运营商是空的,但operator1不是? –

回答

0
outputField.setText(operand1); 

不能使用setText()方法。这只会用新文本取代现有文本。

相反,您需要将文本“追加”到文本字段。一个简单的方法是使用JTextField的replaceSelection(...)方法。

检出:How to add strings to textPane instead of setting them?为一个简单的例子,它将允许您通过重用一个普通的ActionreplaceSelection(...)方法来简单地代码。

相关问题