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
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述boolean
shouldYieldFocus
(JComponent input) 已弃用。boolean
shouldYieldFocus
(JComponent source, JComponent target) 如果此InputVerifier
分配给source
Swing 组件,则由 Swing 调用以检查是否允许请求的焦点从source
转移到target
。abstract boolean
verify
(JComponent input) 检查 JComponent 的输入是否有效。boolean
verifyTarget
(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
分配给source
Swing 组件,则由 Swing 调用以检查是否允许请求的焦点从source
转移到target
。这种方法可能有副作用。如果该方法返回true
,则焦点正常转移;如果它返回false
,那么焦点将保留在第一个参数组件中。- 实现要求:
-
此方法的基本实现返回从
verify(input)
和verifyTarget(input)
获得的结果的结合,以确保源组件和目标组件都处于有效状态。 - 参数:
source
- 焦点转移的源 JComponenttarget
- 焦点转移的目标 JComponent- 返回:
true
有效时,false
无效时- 自从:
- 9
- 参见:
-
shouldYieldFocus(JComponent, JComponent)
代替。