我正在研究计算机编程,并且正在尝试模拟ATM机。我在名称为inputArea的textfeild上遇到一些问题。这是我的一些代码
这里是GUI的构造器
public ATM() {
inputArea = new JTextField();
inputArea.setText("");
inputArea.setEditable(true);
add( inputArea, BorderLayout.SOUTH);
TextFieldHandler handler = new TextFieldHandler();
inputArea.addActionListener(handler);
}
这是事件处理程序
private class TextFieldHandler implements ActionListener{
public void actionPerformed(ActionEvent event) {
if(event.getSource()==inputArea) {
inputMessage = event.getActionCommand();
inputArea.setText("");
}
}
}
程序启动时,将崩溃。我如何使其停止并等待,直到我在文本字段中输入值,然后按Enter。因此accountNumber可以成为我输入的值。
private void authenticateUser()
{
displayMessage( "\nPlease enter your account number: " );
int accountNumber = Integer.parseInt(inputMessage);
displayMessage( "\nEnter your PIN: " ); // prompt for PIN
int pin = Integer.parseInt(inputMessage);
}
这是错误消息
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(Unknown Source)
at java.base/java.lang.Integer.parseInt(Unknown Source)
at java.base/java.lang.Integer.parseInt(Unknown Source)
at ATM.authenticateUser(ATM.java:118)
at ATM.run(ATM.java:94)
at ATMCaseStudy.main(ATMCaseStudy.java:14)
如有任何建议,请随时告诉我。非常感谢。
答案 0 :(得分:0)
将“”解析为整数时遇到问题。
我不使用Swing,但是我有一些解决办法:
1)尝试更改默认值inputArea.setText("0");
2)尝试输入有效
3)使用debbuger来检查“ inputMessage”中的值-如果您从不使用它,请检查它,这在将来非常有用
答案 1 :(得分:0)
您似乎拥有命令行程序和GUI程序的组合。
摆脱命令行功能。
您可以:
显示一个JOptionPane以提示用户您需要的信息。您将需要两个选项窗格,一个提示输入帐号,另一个提示输入密码。阅读有关How to Make Dialogs的Swing教程中的部分,以获取更多信息和工作示例。
创建一个自定义JDialog。一个JDialog就像一个JFrame,您将组件添加到对话框中。因此,您将为帐号添加标签和文本字段,然后为图钉添加第二组标签和格式化的文本字段。然后,您需要添加一个按钮以关闭对话框并从文本字段读取数据,以便进行处理。
请查看以上教程中关于How to Use Password Fields
和How to Use Buttons
的部分,以获取更多信息和简单的工作示例,以使您更加熟悉使用GUI。