0

我正在用 Java 编写一个程序,其中有一些文本字段和一个按钮。

java.lang.NumberFormatException: For input string: ""即使我在运行程序时填写了所有文本字段,我也会得到一个。

我的代码看起来像这样:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        method();
    }
}
            );




public void method() { 
    try { 
        String string1 = textfield1.getText();
        String string2 = textfield2.getText();
        String string3 = textfield3.getText();
        if ( string1.length() == 0 || string2.length() == 0 || string3.length() == 0) { 
            System.out.println("fill in the required text fields");
            return;
        } 
        int number = Integer.parseInt(textfield3.getText());
        //do something
    }
    catch ( NumberFormatException e ) { 
        System.out.println("Wrong format");
    }
}

编辑:

在此处查看更多代码

4

1 回答 1

2

我已经对您的程序进行了一些测试,但您的文本字段有问题,因为您创建了面板并切换了哪个面板处于活动状态。

在构造函数中调用创建 JTextField 的 something() 方法。单击按钮时,您再次调用 something() 并生成一个新的 JTextField,您也将其添加到面板中。

因此,您在 GUI 上有两个 JTextField 位于完全相同的位置,但仅引用其中一个(创建的最后一个)。

当您单击将调用方法()的按钮时。隐藏的 TextField 被要求输入他的文本(这就是它在我的电脑上的工作方式),这总是空的,因为我只能写入我看到的那个。

一个简单的解决方法是更改​​方法 actionPerformed:

@Override
public void actionPerformed( ActionEvent e ) {
    if ( e.getSource() == button1 ) {
        present = something;
        button1.setVisible(false);
        //something();
        visiblePanel();
        previous = something;
    }

}

所以我避免了新创建 JTextField 但 visiblePanel() 确保显示 TextField 和第二个按钮。

进行此更改后,我可以输入“sadda”,按下按钮并查看输出“Numberformatexception”。当我输入一个数字时,我什么也看不到,所以格式有效。

于 2013-05-09T23:28:57.340 回答