如何正确读取awt文本字段中的数字?

时间:2014-01-13 13:00:09

标签: java swing awt

我为我正在做的模拟项目编写了一个GUI,并且在窗口的事件处理代码中,我有,例如,

private void timestepKeyTyped(java.awt.event.KeyEvent evt) {
    String text = timestep.getText();
    AMEC.steptime = Integer.parseInt(text);
}

我希望将输入的任何输入分配到字段时间步以分配给AMEC.steptime。我为所有文本字段执行此操作。

但是,在传递这些参数时,我的模拟无法正常运行,并且在调试时我发现只有第一个字符被解析为int。例如,如果我输入“31”,那么分配给AMEC.steptime的值将变为3而不是31。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您遇到的问题是您使用的是KeyListener。只是不要使用它,使用ActionListener,当你点击 ENTER actionPerformed时执行。然后你可以把相同的代码放在一个像魅力一样运行。

使用swing而不是awt。

如何使用它的示例:

先导入:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;

然后在代码中的某个地方

JTextField textfield = new JTextField();
        textfield.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                JTextField timestep =(JTextField) e.getSource();// you could use this or just your variable.
                String text = timestep.getText();
                AMEC.steptime = Integer.parseInt(text);
            }

        });

作为旁注,您只对允许使用此文本字段数值感兴趣。在上一个问题中阅读更多关于如何制作它的内容。 Restricting JTextField input to Integers