- 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()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 弃用的方法 变量和类型 方法 描述 booleanshouldYieldFocus(JComponent input)已过时。booleanshouldYieldFocus(JComponent source, JComponent target)如果将此InputVerifier分配给sourceSwing组件,则由Swing调用,以检查是否允许从source到target的请求的焦点传输。abstract booleanverify(JComponent input)检查JComponent的输入是否有效。booleanverifyTarget(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分配给sourceSwing组件以检查是否允许从source到target的请求的焦点传输,sourceSwingtarget。 这种方法可能有副作用。 如果此方法返回true,则焦点正常传输; 如果它返回false,则焦点保留在第一个参数组件中。- 实现要求:
-
此方法的基本实现返回从
verify(input)和verifyTarget(input)获得的结果的连接,以确保源组件和目标组件都处于有效状态。 - 参数
-
source- 焦点传输的源JComponent -
target- 焦点转移的目标JComponent - 结果
-
true有效时,false无效时 - 从以下版本开始:
- 9
- 另请参见:
-
JComponent.setInputVerifier(javax.swing.InputVerifier),JComponent.getInputVerifier()
-
-