java.lang.Object
javax.swing.InputVerifier
此类为 Swing 组件提供验证机制。在允许用户导航输入焦点之前,GUI 通常需要确保组件处于有效状态。为此,客户端创建
InputVerifier 的子类,并使用 JComponent 的 setInputVerifier 方法,将其子类的实例附加到作为焦点转移操作源的 JComponent。 InputVerifier 还提供了针对可能拒绝焦点的焦点转移目标进行验证的可能性。在焦点从源 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
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述booleanshouldYieldFocus(JComponent input) 已弃用。booleanshouldYieldFocus(JComponent source, JComponent target) 如果此InputVerifier分配给sourceSwing 组件,则由 Swing 调用以检查是否允许请求的焦点从source转移到target。abstract booleanverify(JComponent input) 检查 JComponent 的输入是否有效。booleanverifyTarget(JComponent target) 检查将接收焦点的目标 JComponent 是否准备好接受焦点。
-
构造方法详细信息
-
InputVerifier
protected InputVerifier()子类调用的构造方法。
-
-
方法详情
-
verify
检查 JComponent 的输入是否有效。这种方法应该没有副作用。它返回一个boolean,指示参数输入的状态。- 参数:
input- 要验证的 JComponent- 返回:
true有效时,false无效时- 参见:
-
shouldYieldFocus
已弃用。调用verify(input)以确保输入有效。这种方法可能有副作用。特别是,当用户试图将焦点从参数组件移到此窗口中的另一个 Swing 组件时,将调用此方法。如果该方法返回true,则焦点正常转移;如果它返回false,那么焦点将保留在参数组件中。- 参数:
input- 要验证的 JComponent- 返回:
true有效时,false无效时- 参见:
-
verifyTarget
检查将接收焦点的目标 JComponent 是否准备好接受焦点。仅当有必要验证焦点转移的目标时,才应重写此方法。这种方法应该没有副作用。它返回一个boolean,指示参数输入的状态。- 实现要求:
-
默认情况下,此方法返回
true。 - 参数:
target- 要验证的目标 JComponent- 返回:
true有效时,false无效时- 自从:
- 9
- 参见:
-
shouldYieldFocus
如果此InputVerifier分配给sourceSwing 组件,则由 Swing 调用以检查是否允许请求的焦点从source转移到target。这种方法可能有副作用。如果该方法返回true,则焦点正常转移;如果它返回false,那么焦点将保留在第一个参数组件中。- 实现要求:
-
此方法的基本实现返回从
verify(input)和verifyTarget(input)获得的结果的结合,以确保源组件和目标组件都处于有效状态。 - 参数:
source- 焦点转移的源 JComponenttarget- 焦点转移的目标 JComponent- 返回:
true有效时,false无效时- 自从:
- 9
- 参见:
-
shouldYieldFocus(JComponent, JComponent)代替。