我正在用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");
}
}
修改
答案 0 :(得分:2)
我已对您的程序进行了一些测试,但由于创建了面板并切换了哪一个处于活动状态,因此文本字段存在问题。
在构造函数中,您调用了创建JTextField的something()方法。单击该按钮后,再次调用something()并生成一个新的JTextField,您也可以将其添加到面板中。
因此,GUI上的两个JTextField在完全相同的位置,但只引用其中一个(最后一个创建)。
当您单击将调用method()的按钮时。隐藏的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”。当我输入数字时,我什么也看不见,因此格式化工作正常。