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