模块 java.desktop

类 InputVerifier

java.lang.Object
javax.swing.InputVerifier

public abstract class InputVerifier extends Object
此类为 Swing 组件提供验证机制。在允许用户导航输入焦点之前,GUI 通常需要确保组件处于有效状态。为此,客户端创建 InputVerifier 的子类,并使用 JComponentsetInputVerifier 方法,将其子类的实例附加到作为焦点转移操作源的 JComponentInputVerifier 还提供了针对可能拒绝焦点的焦点转移目标进行验证的可能性。在焦点从源 Swing 组件转移到目标 Swing 组件之前,调用输入验证器的 shouldYieldFocus(source, target) 方法。仅当该方法返回 true 时才会转移焦点。

以下示例有两个文本字段,第一个文本字段需要用户输入字符串“pass”。如果在第一个文本字段中输入该字符串或第二个文本字段包含“accept”字符串,则用户可以通过单击或按 TAB 键将焦点移至第二个文本字段。但是,如果在第一个文本字段中输入了另一个字符串,而第二个文本字段不包含“accept”,则用户将无法将焦点转移到第二个文本字段。

 import java.awt.*;
 import javax.swing.*;

 // This program demonstrates the use of the Swing InputVerifier class.
 // It creates two text fields; the first of the text fields expects the
 // string "pass" as input, and will allow focus to advance to the second text
 // field if either that string is typed in by the user or the second
 // field contains "accept" string.

 public class VerifierTest extends JFrame {

   public VerifierTest() {
     JTextField field1 = new JTextField("Type \"pass\" here");
     JTextField field2 = new JTextField("or \"accept\" here");
     getContentPane().add(field1, BorderLayout.NORTH);
     getContentPane().add(field2, BorderLayout.SOUTH);

     field1.setInputVerifier(new InputVerifier() {
       public boolean verify(JComponent input) {
        return "pass".equals(((JTextField) input).getText());
       }

       public boolean verifyTarget(JComponent input) {
         return "accept".equals(((JTextField) input).getText());
       }

       public boolean shouldYieldFocus(JComponent source,
                             JComponent target) {
         return verify(source) || verifyTarget(target);
       }
     });

     pack();
     setVisible(true);
   }

   public static void main(String[] args) {
     SwingUtilities.invokeLater(VerifierTest::new);
   }
 }
 
自从:
1.3
  • 构造方法详细信息

    • InputVerifier

      protected InputVerifier()
      子类调用的构造方法。
  • 方法详情

    • verify

      public abstract boolean verify(JComponent  input)
      检查 JComponent 的输入是否有效。这种方法应该没有副作用。它返回一个boolean,指示参数输入的状态。
      参数:
      input - 要验证的 JComponent
      返回:
      true 有效时,false 无效时
      参见:
    • shouldYieldFocus

      @Deprecated (since ="9") public boolean shouldYieldFocus(JComponent  input)
      已弃用。
      调用 verify(input) 以确保输入有效。这种方法可能有副作用。特别是,当用户试图将焦点从参数组件移到此窗口中的另一个 Swing 组件时,将调用此方法。如果该方法返回true,则焦点正常转移;如果它返回 false ,那么焦点将保留在参数组件中。
      参数:
      input - 要验证的 JComponent
      返回:
      true 有效时,false 无效时
      参见:
    • verifyTarget

      public boolean verifyTarget(JComponent  target)
      检查将接收焦点的目标 JComponent 是否准备好接受焦点。仅当有必要验证焦点转移的目标时,才应重写此方法。这种方法应该没有副作用。它返回一个boolean,指示参数输入的状态。
      实现要求:
      默认情况下,此方法返回 true
      参数:
      target - 要验证的目标 JComponent
      返回:
      true 有效时,false 无效时
      自从:
      9
      参见:
    • shouldYieldFocus

      public boolean shouldYieldFocus(JComponent  source, JComponent  target)
      如果此 InputVerifier 分配给 source Swing 组件,则由 Swing 调用以检查是否允许请求的焦点从 source 转移到 target。这种方法可能有副作用。如果该方法返回true,则焦点正常转移;如果它返回 false ,那么焦点将保留在第一个参数组件中。
      实现要求:
      此方法的基本实现返回从 verify(input)verifyTarget(input) 获得的结果的结合,以确保源组件和目标组件都处于有效状态。
      参数:
      source - 焦点转移的源 JComponent
      target - 焦点转移的目标 JComponent
      返回:
      true 有效时,false 无效时
      自从:
      9
      参见: