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