シナリオは次のとおりです。
データベースから値を取得する2 つの JComboBox (combo1 およびombo2 と呼びます) があります[DB では、これら 2 つは 1:M の関係にあります]。画面が表示されたら、combo1 にデータベースの値を入力し、リストの最初のエントリを取得して対応する値を取得し、combo2 に入力します。
コンボ 2 の値はコンボ 1 で選択されているものに依存するため、コンボ 1 で選択が変更されるたびに、データベースに対して呼び出しが行われ、一致する値を取得してコンボ 2 に入力されます。
ここに問題があります:
コンボ 1 に 2 つのエントリがあり、2 番目のエントリにはコンボ 2 に対応する値がないとします。コンボ 1 の 2 番目のエントリを選択すると、コンボ 2 で最後に選択した値がクリアされません。[コンボ 2 のモデルは空であるため、何も選択しないでください]
質問: モデルが空の場合、combo2 のテキストをクリアするにはどうすればよいですか?
サンプルコードは次のとおりです。
public void select(final Entry entry) {
if (entry == null)
return;
int index = entryList.indexOf(entry); // instance of SelectionInList from JGoodies
boolean positive = index >= 0 && index <= entryList.getSize() - 1;
if (positive) {
entryList.setSelection(entry);
subEntryList.setList(entryList.loadSubEntries(entry.getID()));
if (!subEntryList.isEmpty()) {
SubEntry e = subEntryList.getElementAt(0);
select(e);
}
}
}