JTextField没有正确插入字符

时间:2017-02-16 13:54:21

标签: java swing

我目前正在java尝试制作一个计算器。我创建了所有数字按钮,操作,数字显示等。我还将功能添加到每个按钮。一切都运作良好。然后我添加了一个按钮,我可以插入一个点(小数点)。但是这不适合插入JTextField。以下是按钮1的actionPerfomed()dot按钮....

one.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {

        numdisp.setText(numdisp.getText()+one.getText()); //numdisp is the number displayer(JTextField)

    }


//Other buttons like button2,button3,button4,etc.... are not mentioned as they have the same set of code....

dot.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
    numdisp.setText(dot.getText()+numdisp.getText());
    });

Download the jar file here

当您按one按钮时,JTextField会显示数字1.然后按下dot按钮。 JTextField显示" 1。"。到目前为止一切都很好。然后再按1。预期的结果是" 1.1"但相反它显示" 11。"。为什么会出现这个奇怪的问题?怎么解决?

1 个答案:

答案 0 :(得分:1)

ActionListeners中的逻辑是不同的。在一种情况下,您可以在开头添加按钮的文本。在另一种情况下,您可以在最后添加按钮的文本。

因此,更好的解决方案是不使用不同的ActionListener,而是共享相同的ActionListener,因此所有按钮的逻辑都是相同的,您不必创建多个侦听器。这样你就不太可能犯错误。

结帐setText method with panel and button。此示例将向您展示如何:

  1. 创建一个由每个按钮共享的ActionListener
  2. 将文本“附加”到文本字段,而不是替换文本
  3. 使用键绑定,这样用户也可以输入数字