クラスInputVerifier
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を返した場合にのみフォーカスが転送されます。
次の例では2つのテキスト・フィールドがあり、最初のフィールドでは、ユーザーから文字列「pass」が入力されるのを待っています。 最初のテキスト・フィールドにその文字列が入力されているか、2番目のテキスト・フィールドに"accept"文字列が含まれている場合、ユーザーはその文字列内をクリックするか、TABを押して2番目のテキスト・フィールドにフォーカスを進めることができます。 ただし、最初のテキスト・フィールドに別の文字列が入力され、2番目のテキスト・フィールドに"accept"が含まれない場合、ユーザーはフォーカスを2番目のテキスト・フィールドに転送できません。
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
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明booleanshouldYieldFocus(JComponent input) 非推奨。booleanshouldYieldFocus(JComponent source, JComponent target) このInputVerifierがsourceSwingコンポーネントに割り当てられている場合にSwingによって呼び出され、リクエストされたフォーカスがsourceからtargetに転送されるかどうかがチェックされます。abstract booleanverify(JComponent input) JComponentの入力が有効かどうかを確認します。booleanverifyTarget(JComponent target) フォーカスを受信するターゲットJComponentがそれを受け入れる準備ができているかどうかを確認します。
-
コンストラクタの詳細
-
InputVerifier
protected InputVerifier()サブクラスが呼び出すためのコンストラクタ。
-
-
メソッドの詳細
-
verify
public abstract boolean verify(JComponent input) JComponentの入力が有効かどうかを確認します。 このメソッドには副作用はありません。 引数の入力ステータスを示すboolean型を返します。- パラメータ:
input- 検証するJComponent- 戻り値:
- 有効な場合は
true、無効な場合はfalse - 関連項目:
-
shouldYieldFocus
@Deprecated(since="9") public boolean shouldYieldFocus(JComponent input) 非推奨。代わりにshouldYieldFocus(JComponent, JComponent)を使用してください。verify(input)を呼び出して入力が有効であることを確認します。 このメソッドには副作用があります。 特にこのメソッドが呼び出されるのは、ユーザーが引数コンポーネントからこのウィンドウにある別のSwingコンポーネントにフォーカスを進めようとしたときです。 このメソッドがtrueを返す場合、フォーカスは正常に転送されます。falseを返す場合、フォーカスは引数コンポーネントに残ります。- パラメータ:
input- 検証するJComponent- 戻り値:
- 有効な場合は
true、無効な場合はfalse - 関連項目:
-
verifyTarget
public boolean verifyTarget(JComponent target) フォーカスを受信するターゲットJComponentがそれを受け入れる準備ができているかどうかを確認します。 このメソッドは、フォーカス転送のターゲットを検証する必要がある場合にのみオーバーライドする必要があります。 このメソッドには副作用はありません。 引数の入力ステータスを示すboolean型を返します。- 実装要件:
- デフォルトでは、このメソッドは
trueを返します。 - パラメータ:
target- 検証するターゲットJComponent- 戻り値:
- 有効な場合は
true、無効な場合はfalse - 導入されたバージョン:
- 9
- 関連項目:
-
shouldYieldFocus
public boolean shouldYieldFocus(JComponent source, JComponent target) このInputVerifierがsourceSwingコンポーネントに割り当てられている場合にSwingによって呼び出され、リクエストされたフォーカスがsourceからtargetに転送されるかどうかがチェックされます。 このメソッドには副作用があります。 このメソッドがtrueを返す場合、フォーカスは正常に転送されます。falseを返す場合、フォーカスは最初の引数コンポーネントに残ります。- 実装要件:
- このメソッドの基本的な実装では、ソース・コンポーネントとターゲット・コンポーネントの両方が有効な状態であることを確認するために、
verify(input)およびverifyTarget(input)から取得した結果の結合が戻されます。 - パラメータ:
source- フォーカス転送のソースJComponenttarget- フォーカス転送のターゲットJComponent- 戻り値:
- 有効な場合は
true、無効な場合はfalse - 導入されたバージョン:
- 9
- 関連項目:
-
shouldYieldFocus(JComponent, JComponent)を使用してください。