验证Swing GUI中的所有字段

mtc*_*aka 7 java validation swing

我有个问题.我创建了一个Swing GUI表单.此表单包含JTextFields,JComboBox组件.

现在我想做什么,当用户按下完成按钮我想验证JTextFields和JComboBox组件.我想为所有JTextFields编写通用方法,为JComboBoxes编写另一种常用方法.有谁知道验证API?

我不需要逐个验证所有字段.

Rei*_*eus 7

这里的一个选择是使用Swing InputVerifier来验证每个JComboBoxJTextField使用的输入.您可以在组件之间共享通用验证器:

   public class MyNumericVerifier extends InputVerifier {
        @Override
        public boolean verify(JComponent input) {
           String text = null;

           if (input instanceof JTextField) {
             text = ((JTextField) input).getText();
           } else if (input instanceof JComboBox) {
             text = ((JComboBox) input).getSelectedItem().toString();
           }

           try {
              Integer.parseInt(text);
           } catch (NumberFormatException e) {
              return false;
           }

           return true;
        }

        @Override
        public boolean shouldYieldFocus(JComponent input) {
           boolean valid = verify(input);
           if (!valid) {
              JOptionPane.showMessageDialog(null, "Invalid data");
           }

           return valid;
       }
    }

InputVerifier verifier = new MyNumericVerifier()
comboBox.setInputVerifier(verifier);
Run Code Online (Sandbox Code Playgroud)


pau*_*sm4 6

如果"验证"意味着"检查所有字段"......那么,是的 - 您的"验证"例程将逐个检查所有字段:)

您还可以"随时验证".有很多方法可以实现这一目标,包括: