Java Swing:实现输入值的有效性检查

在我的Swing应用程序中,用户必须先插入数字和值,然后才能切换到下一个窗口。现在,作为干净程序,我将检查每个输入是否有效,如果无效,则会显示错误消息,并且下一个窗口不会打开。

此检查的结构如下(示例):

Button buttonToOpenNextWindow = new JButton("next");

button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(checkValidty){

// (...)

new WindowA();

frame.dispose(); // (*)

}

}

});

我知道多个JFrames的原理很丑陋,我将要更改它,但是对于这个问题,它是无关紧要的。

现在,这个问题的重点是this checkValidity(),我将其结构如下:

private boolean checkValidity(){

// check input 1

try{

Integer.parseInt(textField1.getText());

}catch (NumberFormatException e){

new ErrorDialog("input 1 is invalid!"); // own implemented dialog

return false;

}

// check input 2

try{

Integer.parseInt(textField2.getText());

}catch (NumberFormatException e){

new ErrorDialog("input 2 is invalid!"); // own implemented dialog

return false;

}

// (...)

// check input n

try{

Integer.parseInt(textField_n.getText());

}catch (NumberFormatException e){

new ErrorDialog("input n is invalid!"); // own implemented dialog

return false;

}

return true;

}

这完全符合我的要求,但是代码本身非常丑陋,因为具有多个输入选项,该方法的长度为200、300或更多行(因为我不仅检查例如它是否是数字,而且还检查数字是否有意义)在程序逻辑等方面)。是否有Swing自己的方法来检查这种情况?还是有更好的主意,如何使用拆分方法完全实现此功能?

回答:

一种解决方案是使用Swing

InputVerifier验证每个JTextField使用的输入。由于每个字段的验证功能都相同,因此可以将单个实例用于所有组件:

public class MyNumericVerifier extends InputVerifier {

@Override

public boolean verify(JComponent input) {

String text = ((JTextField) input).getText();

try {

Integer.parseInt(text);

} catch (NumberFormatException e) {

return false;

}

return true;

}

}

InputVerifier verifier = new MyNumericVerifier()

textField1.setInputVerifier(verifier);

以上是 Java Swing:实现输入值的有效性检查 的全部内容, 来源链接: utcz.com/qa/403627.html

回到顶部