Observable
Javaの実装はめったに使用されず、Swingとうまく動作しません。代わりにEventListener
を使用してください。
特に、AbstractListModel
を拡張しないでください。または、リストの内容を「GUIの他の場所」で管理するときにDefaultListModel
を直接使用しないでください。その場合、コンボボックスは同じListModel
インスタンスに委譲し、独自の実装を追加して選択状態を追跡するComboBoxModel
を使用できます。
は、私はこのような心の何かを持っている(しかし、私はそれをテストしていない):によって定義されているよう
final class MyComboBoxModel
extends AbstractListModel
implements ComboBoxModel
{
private final ListModel data;
private volatile Object selection;
MyComboBoxModel(ListModel data) {
/*
* Construct this object with a reference to your list,
* which contents are managed somewhere else in the UI.
*/
this.data = data;
data.addListDataListener(new ListDataListener() {
public void contentsChanged(ListDataEvent evt) {
fireContentsChanged(this, evt.getIndex0(), evt.getIndex1());
}
public void intervalAdded(ListDataEvent evt) {
fireContentsChanged(this, evt.getIndex0(), evt.getIndex1());
}
public void intervalRemoved(ListDataEvent evt) {
fireContentsChanged(this, evt.getIndex0(), evt.getIndex1());
}
});
}
public void setSelectedItem(Object selection) {
this.selection = selection;
fireContentsChanged(this, 0, data.getSize() - 1);
}
public Object getSelectedItem() { return selection; }
public int getSize() { return data.getSize(); }
public Object getElementAt(int idx) { return data.getElementAt(idx); }
}
を参照しているチェックアウトし、アプリケーションに新しいjarファイルを追加することができますか?もしそうなら、私はComboBoxModelとその実装を調べます。 – Avrom