- java.lang.Object
-
- javax.swing.InputVerifier
-
public abstract class InputVerifier extends Object
此类为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); field.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()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 弃用的方法 变量和类型 方法 描述 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是否已准备好接受它。
-
-
-
方法详细信息
-
verify
public abstract boolean verify(JComponent input)
检查JComponent的输入是否有效。 这种方法应该没有副作用。 它返回一个布尔值,指示参数输入的状态。- 参数
-
input
- 要验证的JComponent - 结果
-
true
有效时,false
无效时 - 另请参见:
-
JComponent.setInputVerifier(javax.swing.InputVerifier)
,JComponent.getInputVerifier()
-
shouldYieldFocus
@Deprecated(since="9") public boolean shouldYieldFocus(JComponent input)
Deprecated.useshouldYieldFocus(JComponent, JComponent)
instead.调用verify(input)
以确保输入有效。 这种方法可能有副作用。 特别是,当用户尝试将焦点从参数组件中提升到此窗口中的另一个Swing组件时,将调用此方法。 如果此方法返回true
,则焦点正常传输; 如果它返回false
,则焦点保留在参数组件中。- 参数
-
input
- 要验证的JComponent - 结果
-
true
有效时,false
无效时 - 另请参见:
-
JComponent.setInputVerifier(javax.swing.InputVerifier)
,JComponent.getInputVerifier()
-
verifyTarget
public boolean verifyTarget(JComponent target)
检查将接收焦点的目标JComponent是否已准备好接受它。 只有在需要验证焦点转移的目标时,才应该覆盖此方法。 这种方法应该没有副作用。 它返回一个布尔值,指示参数输入的状态。- 实现要求:
-
默认情况下,此方法返回
true
。 - 参数
-
target
- 要验证的目标JComponent - 结果
-
true
有效时,false
无效时 - 从以下版本开始:
- 9
- 另请参见:
-
JComponent.setInputVerifier(javax.swing.InputVerifier)
,JComponent.getInputVerifier()
-
shouldYieldFocus
public boolean shouldYieldFocus(JComponent source, JComponent target)
如果将此InputVerifier
分配给source
Swing组件以检查是否允许从source
到target
的请求的焦点传输,source
Swingtarget
。 这种方法可能有副作用。 如果此方法返回true
,则焦点正常传输; 如果它返回false
,则焦点保留在第一个参数组件中。- 实现要求:
-
此方法的基本实现返回从
verify(input)
和verifyTarget(input)
获得的结果的连接,以确保源组件和目标组件都处于有效状态。 - 参数
-
source
- 焦点传输的源JComponent -
target
- 焦点转移的目标JComponent - 结果
-
true
有效时,false
无效时 - 从以下版本开始:
- 9
- 另请参见:
-
JComponent.setInputVerifier(javax.swing.InputVerifier)
,JComponent.getInputVerifier()
-
-