无法从Java GUI文本字段获取输入值

时间:2018-11-17 11:41:25

标签: java

我正在研究计算机编程,并且正在尝试模拟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)

如有任何建议,请随时告诉我。非常感谢。

2 个答案:

答案 0 :(得分:0)

将“”解析为整数时遇到问题。 我不使用Swing,但是我有一些解决办法: 1)尝试更改默认值inputArea.setText("0"); 2)尝试输入有效 3)使用debbuger来检查“ inputMessage”中的值-如果您从不使用它,请检查它,这在将来非常有用

答案 1 :(得分:0)

您似乎拥有命令行程序和GUI程序的组合。

摆脱命令行功能。

您可以:

  1. 显示一个JOptionPane以提示用户您需要的信息。您将需要两个选项窗格,一个提示输入帐号,另一个提示输入密码。阅读有关How to Make Dialogs的Swing教程中的部分,以获取更多信息和工作示例。

  2. 创建一个自定义JDialog。一个JDialog就像一个JFrame,您将组件添加到对话框中。因此,您将为帐号添加标签和文本字段,然后为图钉添加第二组标签和格式化的文本字段。然后,您需要添加一个按钮以关闭对话框并从文本字段读取数据,以便进行处理。

请查看以上教程中关于How to Use Password FieldsHow to Use Buttons的部分,以获取更多信息和简单的工作示例,以使您更加熟悉使用GUI。