【问题标题】:ActionPerformed and ActionListener [closed]ActionPerformed 和 ActionListener [关闭]
【发布时间】:2013-04-19 20:40:38
【问题描述】:

我的程序问用户:你完成了多少门课程?因此,用户必须在 JTextField 组件上输入已完成的课程数量。然后,我的程序将 JTextField 中输入的字符串转换为整数。当我运行我的程序时,我得到一个 numberformatException。我尝试调试,我注意到我的程序在用户编写任何内容之前将字符串转换为整数。该程序不会等待用户输入任何内容。如何让我的程序在继续执行代码之前等待用户输入数字?

public class content extends JPanel implements ActionListener
{

     String number = "";
     JTextField NumtextField = new JTextField(5);

     @Override
     public void actionPerformed(ActionEvent e)
     {
         number = NumtextField.getNumtextField().getText();
     }

     int size = Integer.parseInt(number);

}

【问题讨论】:

  • 看看 JFormattedField、JSpinner 和/或 DocumentFilter
  • 无关:请学习java命名约定并遵守它们。至于您的问题:您显示的 sn-p 无法解释您描述的问题 - 显示一个 SSCCE 来说明问题。

标签: java swing awt jtextfield parseint


【解决方案1】:

int size = Integer.parseInt(number); 移动到 actionPerformed 内:

 public void actionPerformed(ActionEvent e){
 number = NumtextField.getNumtextField().getText();
 int size = Integer.parseInt(number);
 }

当程序启动时,它试图解析"",这不是一个有效的数字字符串,因此你会得到一个异常。 另外,也许您应该将它放在 try{}catch{} 块中,这样如果您实时遇到异常,您可以处理它:

try {
 int size = Integer.parseInt(number);
}
catch (NumberFormatException e) {
System.out.println("Thats not a valid number");
}

【讨论】:

  • 它已经解决了错误问题,但是我的程序在没有用户输入的情况下仍然运行,因为它没有等待用户输入完成的课程数。如何让程序等待?
  • but my program still runs without the user's input == 使用 JOptionPane 并使用 JFormattedTextField 而不是从普通的 JTextField 解析任何内容
  • @mKorbel 如何让我的程序在继续之前等待用户输入数字?
  • @Pierre 动作事件应该只在其附加的对象触发一个动作事件时发生,你是什么意思等待用户的输入?
  • @MrD 实际上,我的程序接受用户的输入(在 JTextField 中输入的数字)并进行一些计算。所以,如果我的代码不等待用户的号码,它正在计算没有数字。
猜你喜欢
  • 2017-06-20
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
相关资源
最近更新 更多