2017-03-05 5 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] 또는 [Short, Self Contained, Correct Example] (http://www.sscce.org/)를 게시하십시오. 2)이 작업 [계산기 예제] (http://stackoverflow.com/a/7441804/418556)도 참조하십시오. 'ScriptEngine'을 사용해 텍스트 필드의 표현을 평가합니다. –

+0

무엇이'operator','operator1'과'operator2'입니다. '연산자'는 비어 있지만 '연산자 1'은 비어있을 수 있습니까? –

답변

0
outputField.setText(operand1); 

당신은의 setText() 메소드를 사용할 수 없습니다에게 누를 때까지 그냥 멈추고 기다립니다. 그러면 기존 텍스트가 새 텍스트로 바뀝니다.

대신 텍스트를 텍스트 필드에 "추가"해야합니다. 이렇게하는 쉬운 방법은 replaceSelection(...) JTextField 메서드를 사용하는 것입니다.

간단한 예를 보려면 ActionreplaceSelection(...) 메서드를 다시 사용하여 코드를 간단하게 작성할 수 있습니다. How to add strings to textPane instead of setting them?을 참조하십시오.