Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确读取awt文本字段中的数字?_Java_Swing_Awt - Fatal编程技术网

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

Java 如何正确读取awt文本字段中的数字?,java,swing,awt,Java,Swing,Awt,我已经为我正在做的模拟项目编写了GUI,在窗口的事件处理代码中,例如 private void timestepKeyTyped(java.awt.event.KeyEvent evt) { String text = timestep.getText(); AMEC.steptime = Integer.parseInt(text); } 在这里,我想将输入到字段timestep中的任何输入分配给AMEC.steptime。我对所有文本字段都这样做 但是,当传递这些参数时,我

我已经为我正在做的模拟项目编写了GUI,在窗口的事件处理代码中,例如

private void timestepKeyTyped(java.awt.event.KeyEvent evt) {
    String text = timestep.getText();
    AMEC.steptime = Integer.parseInt(text);
}
在这里,我想将输入到字段timestep中的任何输入分配给AMEC.steptime。我对所有文本字段都这样做

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


如何解决此问题?

您面临的问题是您正在使用
键侦听器。不要使用它,使用一个
ActionListener
,当你点击回车键时,执行
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);
            }

        });
作为补充说明,您可能只想在这个文本字段中允许数字值。在上一个问题中阅读更多关于如何制作的内容。

您面临的问题是您正在使用
键侦听器。不要使用它,使用一个
ActionListener
,当你点击回车键时,执行
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);
            }

        });
作为补充说明,您可能只想在这个文本字段中允许数字值。在上一个问题中阅读更多关于如何制作的内容。

对不起,在添加ActionListener之前,我没有删除KeyListener函数。谢谢,这成功了@马丁:好的,我把它放在example@nachokk:它只是你的复制品。@HovercraftFullOfEels但它是同时的,不涉及版权xD,你不应该删除它好吧,我两个都读了,你的比我的更干净。我不需要向上投票,所以为什么要搅浑呢?对不起,我在添加ActionListener之前没有删除KeyListener函数。谢谢,这成功了@马丁:好的,我把它放在example@nachokk:它只是你的复制品。@HovercraftFullOfEels但它是同时的,不涉及版权xD,你不应该删除它好吧,我两个都读了,你的比我的更干净。我不需要投票,为什么要把水弄脏?