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"文字列が含まれている場合、ユーザーは2番目のテキスト・フィールドをクリックするか、Tabキーを押してフォーカスを進めることができます。 ただし、別の文字列が最初のテキスト・フィールドに入力され、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
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明boolean
shouldYieldFocus
(JComponent input) 非推奨。boolean
shouldYieldFocus
(JComponent source, JComponent target) このInputVerifier
がsource
Swingコンポーネントに割り当てられ、source
からtarget
へのリクエストされたフォーカス転送が許可されているかどうかを確認する場合は、Swingによって呼び出されます。abstract boolean
verify
(JComponent input) JComponentの入力が有効かどうかを確認します。boolean
verifyTarget
(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
がsource
Swingコンポーネントに割り当てられ、source
からtarget
へのリクエストされたフォーカス転送が許可されているかどうかを確認する場合は、Swingによって呼び出されます。 このメソッドには副作用があります。 このメソッドがtrue
を返した場合、フォーカスは正常に転送されます。false
を返すと、フォーカスは最初の引数コンポーネントに残ります。- 実装要件:
- このメソッドの基本的な実装では、ソース・コンポーネントとターゲット・コンポーネントの両方が有効な状態になるように、
verify(input)
とverifyTarget(input)
から得られた結果の連結を返します。 - パラメータ:
source
- フォーカス転送のソースJComponenttarget
- フォーカス転送のターゲットJComponent- 戻り値:
- 有効な場合は
true
、無効な場合はfalse
- 導入されたバージョン:
- 9
- 関連項目:
-
shouldYieldFocus(JComponent, JComponent)
を使用してください。