モジュール java.desktop
パッケージ javax.swing

クラスInputVerifier


  • public abstract class InputVerifier
    extends Object
    このクラスは、Swingコンポーネントの検証メカニズムを提供します。 GUIでは、ユーザーが入力フォーカスをナビゲートできるようにする前に、コンポーネントが有効な状態であることを確認することがよくあります。 これを行うには、クライアントはInputVerifierのサブクラスを作成し、JComponentsetInputVerifierメソッドを使用して、そのサブクラスのインスタンスを、フォーカス転送操作のソースである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);
    
             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

        public InputVerifier()
    • メソッドの詳細

      • 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がそれを受け入れる準備ができているかどうかをチェックします。 このメソッドは、フォーカス転送のターゲットを検証する必要がある場合にのみオーバーライドする必要があります。 このメソッドには副作用はありません。 引数の入力ステータスを示すboolean型を返します。
        実装要件:
        デフォルトでは、このメソッドはtrueを返します。
        パラメータ:
        target - 検証するターゲットJComponent
        戻り値:
        有効な場合はtrue、無効な場合はfalse
        導入されたバージョン:
        9
        関連項目:
        JComponent.setInputVerifier(javax.swing.InputVerifier), JComponent.getInputVerifier()
      • shouldYieldFocus

        public boolean shouldYieldFocus​(JComponent source,
                                        JComponent target)
        このInputVerifiersource Swingコンポーネントに割り当てられ、リクエストされたsourceからtargetへのフォーカス転送が許可されているかどうかを確認する場合に、Swingによってコールされます。 このメソッドには副作用があります。 このメソッドがtrueを返す場合、フォーカスは正常に転送され、falseを返す場合、フォーカスは最初の引数コンポーネントに残ります。
        実装要件:
        このメソッドの基本的な実装では、verify(input)およびverifyTarget(input)から取得した結果の結合が戻され、ソース・コンポーネントとターゲット・コンポーネントの両方が有効な状態であることが確認されます。
        パラメータ:
        source - フォーカス転送のソースJComponent
        target - フォーカス転送のターゲットJComponent
        戻り値:
        有効な場合はtrue、無効な場合はfalse
        導入されたバージョン:
        9
        関連項目:
        JComponent.setInputVerifier(javax.swing.InputVerifier), JComponent.getInputVerifier()