Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于输入字符串:"&引用;填写文本字段时_Java_Actionlistener_Numberformatexception - Fatal编程技术网

Java 对于输入字符串:"&引用;填写文本字段时

Java 对于输入字符串:"&引用;填写文本字段时,java,actionlistener,numberformatexception,Java,Actionlistener,Numberformatexception,我正在用Java编写一个程序,其中有一些文本字段和一个按钮 我得到一个java.lang.NumberFormatException:用于输入字符串:“,即使我在运行程序时已填写了所有文本字段 我的代码如下所示: button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { method(); } }

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

我得到一个
java.lang.NumberFormatException:用于输入字符串:“
,即使我在运行程序时已填写了所有文本字段

我的代码如下所示:

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");
    }
}
编辑:


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

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

因此,GUI上有两个jTextField,位置完全相同,但只引用其中一个(最后创建的一个)

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

解决此问题的一个简单方法是更改执行的方法:

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

}
因此,我避免新创建JTextField,但visiblePanel()确保显示TextField和第二个按钮


更改后,我可以输入“sadda”,按下按钮并查看输出“Numberformatexception”。当我输入一个数字时,我看不到任何东西,所以格式是有效的。

您分配
textfield3.getText()
string3
。还不如用它!另外,调试代码。它会告诉你哪里出了问题。看了你提供的代码后,我看不出有什么错误。现在是消除一些愚蠢错误的时候了。你确定
textfield3
是正确的字段吗?我猜你的代码看起来像这样,但不完全是这样。错误可能在“不完全”部分。发布重现问题的SSCE。尝试使用字符串#trim().length()。添加一些System.outs以测试文本字段的值并尝试调试代码我认为错误不在方法中,因为您捕获了异常,您可以发布更多代码,还是这是您唯一一次在代码中将字符串转换为数字?@JBNizet我现在添加了代码链接。