Java 验证GUI中的文本字段输入
我有两个文本字段,当单击“提交”时,它们的总数必须达到100,如果我在文本字段中输入正确的值,则不会出现错误,但如果我将文本字段留空或在其中输入字母,则错误处理不正确。有什么想法吗Java 验证GUI中的文本字段输入,java,validation,user-interface,Java,Validation,User Interface,我有两个文本字段,当单击“提交”时,它们的总数必须达到100,如果我在文本字段中输入正确的值,则不会出现错误,但如果我将文本字段留空或在其中输入字母,则错误处理不正确。有什么想法吗 submit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (validation == true) { int numA = Inte
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (validation == true) {
int numA = Integer.parseInt(aTextField.getText());
int numB = Integer.parseInt(aTextField.getText());
int sum = numA + numB;
if (sum == 100) {
validation = true;
System.out.println("success");
} else {
JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
validation = false;
}
}
这就是错误所在
int numA = Integer.parseInt(aTextField.getText());
检查一下!函数无法处理空字符串。那应该是多少
可能的解决办法:
- 将文本字段的默认文本设置为“0”
- 为parseInt调用添加异常处理(您可以退回到 0或提示用户进行更正)
Integer.parseInt(str)如果解析到方法中的字符串
无法转换为数字,则code>会抛出一个NumberFormatException
(您看到的错误)
在这种特殊情况下,您可以使用一些异常处理。我建议使用try
和catch
块。比如,
try{
if(validation == true){
int numA = Integer.parseInt(aTextField.getText());
int numB = Integer.parseInt(aTextField.getText());
int sum = numA + numB;
if(sum == 100){
validation = true;
System.out.println("success");
} else{
JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
validation = false;
}
}
} catch (NumberFormatException n){
JOptionPane.showMessageDialog(createFrame, "Only numbers should be entered into A and B");
validation = false;
}
如果现在从try
块中抛出异常,则它将被“捕获”,然后验证将在catch
块中设置为false
。您还可以使用catch块显示一条消息,说明字段中只应输入数字
使用Swing API实现这一点的另一种方法是,如果您不希望他们将文本输入到这些字段中,您可以使用a来允许他们只输入数字
我希望这有帮助。请告诉我您的进展情况。在转换之前,您必须检查这些值。或者使用类似的@user3103074-没问题。很高兴我能帮忙。:)