---
category: swing
folder: VerifyInputWhenFocusTarget
title: InputVerifierを設定したJTextFieldの値が不正な場合のフォーカス移動
tags: [JTextField, InputVerifier, Focus]
author: aterai
pubdate: 2014-03-10T10:15:22+09:00
description: InputVerifierを設定したJTextFieldの値が適切な形式でない場合のフォーカス移動動作をテストします。
image: https://lh4.googleusercontent.com/-0s6ChUywZz8/Ux0P0IVi99I/AAAAAAAACBY/8hZOhY0SCI4/s800/VerifyInputWhenFocusTarget.png
---
* 概要 [#summary]
`InputVerifier`を設定した`JTextField`の値が適切な形式でない場合のフォーカス移動動作をテストします。

#download(https://lh4.googleusercontent.com/-0s6ChUywZz8/Ux0P0IVi99I/AAAAAAAACBY/8hZOhY0SCI4/s800/VerifyInputWhenFocusTarget.png)

* サンプルコード [#sourcecode]
#code(link){{
button2.setVerifyInputWhenFocusTarget(false);
}}

* 解説 [#explanation]
上記のサンプルでは、フォーカスが別のコンポーネントに移動する時に現在フォーカスを持つコンポーネントの`InputVerifier`で値を検証するかをテストしています。

- `Default`:
- `Default`
-- `JButton`のデフォルトで`getVerifyInputWhenFocusTarget()`が`true`、`isFocusable()`も`true`
-- すべての`JTextField`の値をクリアして自身にフォーカスが移動するが、フォーカスの存在した`JTextField`に入力されている値が`Integer`でない場合警告音が鳴る
- `setFocusable(false)`:
- `setFocusable(false)`
-- `setFocusable(false)`を設定
-- すべての`JTextField`の値をクリアするが、フォーカスは移動しないためフォーカスの存在した`JTextField`に入力されている値が`Integer`でない場合でも警告音は鳴らない(設定されている`InputVerifier#verify(...)`は呼ばれない)
- `setVerifyInputWhenFocusTarget(false)`:
- `setVerifyInputWhenFocusTarget(false)`
-- `setVerifyInputWhenFocusTarget(false)`を設定
-- すべての`JTextField`の値をクリアして自身にフォーカスが移動するが、フォーカスの存在した`JTextField`に入力されている値が`Integer`でない場合でも警告音は鳴らない(設定されている`InputVerifier#verify(...)`は呼ばれない)

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/1.4/guide/swing/1.3/InputChanges.html 入力の検証]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JComponent.html#setVerifyInputWhenFocusTarget-boolean- JComponent#setVerifyInputWhenFocusTarget(boolean) (Java Platform SE 8)]

* コメント [#comment]
#comment
#comment