a のリストの内容を変更したいJComboBox
(古いリストの代わりに別のリストを追加するなど)。それができる方法はありますか?前もって感謝します!
5 に答える
実行時に既存のコンボ ボックスから項目を追加および削除できるようにする場合、コンボ ボックスの基になるデータ モデルは MutableComboBoxModel である必要があります。
インターフェイス情報とその使用方法の例については、そのクラスの Google を参照してください。
ユーザーに新しい値を入力させたい場合は、ボックスを編集可能にする必要もあります。
ここに例へのリンクがいくつかあります。
私はこのスレッドを見つけて、迅速な(そしておそらく汚い)解決策を思いつきました:
oldComboBox.setModel(new JComboBox<>(new_items).getModel());
もちろんできます。デフォルトのリスト モデルを使用して JComboBox を操作する方法はいくつかあります。remove* メソッドと add* メソッドを見てください。
http://java.sun.com/javase/6/docs/api/javax/swing/JComboBox.html
モデル全体を setModel() で置き換えることもできます。
しかし、ますます多くのユーザー インターフェイスを作成した後、ComboBox が提示するデータ構造をラップするカスタム ComboBoxModel を作成する方が便利であることがわかりました。これは、より単体テスト可能でクリーンです、IMHO。
Glazed Listsライブラリは、あらゆる種類の可変リストをGUIコントロールにワイヤリングする場合に非常に役立ちます。これは大規模なライブラリであり、プロジェクトには適さない場合がありますが、スクリーンキャストを見て、自分で判断してください。フィルタリングやオートコンプリートなど、関連する多くの機能をサポートしており、手作業を大幅に節約できます。