- PR -

JPasswordFieldの監視

1
投稿者投稿内容
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-04-14 11:40
いつもお世話になっています。
実は、今回appletでパスワード入力項目を作成しています。
それで、パスワードが入力されたら「OK」ボタンを押せる
ように監視出来るようにしたいと思いました。
ちなみにTextFieldでは
addTextListenerが
あったのですが、JPasswordFieldで探しても
見つかりませんでした。
自分が勘違いや見つけれていないのかもしれませんが、
TextField.addTextListenerと同じようなことを対応させる方法は
あるのでしょうか?

まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-04-14 11:47
すみません。
書き忘れましたが、現在はaddCaretListenerで
対応させていますが、これでも
良いのでしょうか?
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2006-04-14 12:34
DocumentListener のほうが良いのでは?

jPasswordField.getDocument().addDocumentListener(documentListener);
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-04-14 13:49
返事ありがとうございます。
DocumentListenerを調べて見て、
変更があった場合の為の3つのメソッドを
実装することとDocumentListenerを使用するのが
一般的だとは分かったのですが、DocumentListenerを
使用する理由が分かりませんでした。
何故なのでしょうか。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2006-04-14 14:14
1文字以上の文字が入力されたらボタンを有効にしたいという要求に対して、CaretListener よりも DocumentListener のほうが直接的だと思います。

1文字以上の入力がされているかどうかというのは文字(ドキュメント)が変化するたびに一度だけ検査すれば十分です。CaretListener の場合は文字(ドキュメント)が変化していなくてもカーソルキーの左右をいじるだけで検査が発生します。また、キャレット位置が先頭のまま変更されずにテキストをペーストできるような GUI インターフェイスが存在した場合、対応できなくなります。

文字が変化するたびに検査する必要があるなら、DocumentListener を使うほうが良いです。文字が入力されたら、おのずとキャレット位置も動くよね、というのは特定の作用を期待した間接的な手法です。

今回の場合はキャレット位置判定でも、うまくいくと思いますが、ソフトウェア開発の一般論として、なるべく直接的なイベントをトリガーにして処理を書いたほうが良いと考えます。
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-04-14 15:02
ご丁寧な説明ありがとうございました。
こんなに丁寧に説明して頂き感動しました!!
ちゃんと深く考えないといけないと感じました。
APIやネットを見ても分かりやすい説明が
ありませんのでしたのでとても助かりました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)