计算器:我无法在JTextField中重复我的数字

时间:2017-03-05 22:11:42

标签: java eclipse swing jframe gridbaglayout

我无法将我的数字按钮添加到自己,让我们说如果我想输入11,它将无法正常工作它只在文本字段中显示1。它不会让我按下另一个数字按钮并将其附加到文本字段中的1或任何数字。它只是停下来等待我按下操作按钮

    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 个答案:

答案 0 :(得分:0)

outputField.setText(operand1);

您无法使用setText()方法。这只会用新文本替换现有文本。

相反,你需要"追加"文本到文本字段。一种简单的方法是使用JTextField的replaceSelection(...)方法。

请查看:How to add strings to textPane instead of setting them?,这是一个简单的示例,您可以通过重复使用通用ActionreplaceSelection(...)方法来简化代码。