2011-11-09 15 views
2

EDIT: "デフォルト値"という用語が混乱するので、 "初期の値に変更しました。"JComboBoxにデフォルト値があるかどうかを確認

これは興味深い質問のようなものです。私はサイト上で答えを探したが、見つからなかった。

私はJavaでバリデータークラスを作成していますが、検証したいものの1つは、JComboBoxの初期値があるかどうかです。

私はではありません。ユーザが値を選択したかどうかを確認します。単にユーザーが選択した値が初期値と同じである場合のみです。

例えば、の選択肢があるとしましょう:

Some Message Here 
Item 1 
Item 2 
Item 3 

...など。 「Some Message Here」というテキストが初期値になり、setSelectedIndexまたはsetSelectedItemメソッドを使用してテキストを作成します。

問題は、ユーザーが別のアイテム(アイテム1など)を選択すると、初期値が何であるかを特定する方法がなくなってしまうことです。

バリデータークラスでは、インデックス0の値が実際にはどうなっているのかを知る方法がないため、「マジックナンバー」(たとえば、if (cb.getSelectedIndex() == 0)など)さあ。 (そして、例えば、米国の州のリストではないかもしれません。)

私はどのイベントリスナーも使用できません。ユーザが「項目1」を選択し、次に「ここにあるメッセージ」を再選択する状況を考える。私はこれが妥当性検査に失敗することを望むだろう

アイデア?レコードの

+0

デフォルト値を変数に格納し、選択した値がこの変数に格納されている値と等しいかどうかを確認します。私は何か見落としてますか? –

+2

"デフォルト値" - あなた自身が意味するものは、リスト自体に含まれていない最初に選択された値を理解していませんか?とにかく、ユーザーが無効なものを選択できるようにするのはユーザーにとって不利益なのですから、どうすればいいのでしょうか? – kleopatra

+0

@JB Nizet:したがって、デフォルト値(文字列またはint)を検証に渡すべきですメソッド自体? 'Validator.isDefault(myComboBox)' –

答えて

1

が、ここで私がやってしまったものです:

私は例えば、JB Nizetのアドバイスを取って、コーダ静的検証クラスに初期値を渡していた:

Validator.isDefault(myComboBox, myInitialIndex); 

をしかし、それはとして文字列を取るように私はおそらくそれが過負荷によ

Validator.isDefault(myComboBox); // same as Validator.isDefault(myComboBox, 0); 

:私はまた、そのようなあなたは、単にJComboBoxのでそれを呼び出すことができ、そしてインデックスは0にデフォルト設定されますことを、オーバーロード(そしてgetSelectedItem()を使ってチェックします)。

もっと良い方法があれば、私はそれが何であるか分かりません。

関連する問題