我为我正在做的模拟项目编写了一个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。
我该如何解决这个问题?
答案 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