1

お気に入り/MRU タイプの動作を JComboBox に追加するコードを探しています。

私はこれを自分でコーディングできますが、おそらく他の誰かがすでにそれを行っているようです.

私は次のものを見つけました(これは私が望むものとまったく同じように見えますが、ソースコードは完全にはほど遠いです):http://java.sys-con.com/node/36658

助言がありますか?これを比較的軽量に保つ必要があるため、モノリシック ウィジェット ライブラリの一部であるコンポーネントを使用しないことを好み、オープン ソースを優先します。

4

2 に答える 2

1

DefaultComboBoxModel: overrideaddElement()を拡張insertElementAt()し、ゼロに挿入して最後の要素を削除することを検討してください。

補遺: これは例です。SO ごとに、ライセンスはcc-wikiです。Preferencesエントリを永続化するために使用します。

class MRUComboBoxModel extends DefaultComboBoxModel {

    @Override
    public void addElement(Object element) {
        this.insertElementAt(element, 0);
    }

    @Override
    public void insertElementAt(Object element, int index) {
        super.insertElementAt(element, 0);
        int size = this.getSize();
        if (size > 10) {
            this.removeElementAt(size - 1);
        }
    }
}
于 2010-04-16T22:03:32.930 に答える
0

JComboBoxサブクラス化してオーバーライドするだけではどうでしょうか

public void addItem(Object anObject)

あなたが望む機能をそれに与えるために?

有効なアイテムと同期されたアイテムの内部リストを保持するだけでよく、新しいアイテムを追加するたびに、size() >= maxItems最新のものがないかどうかを確認して削除できます。

次に、アイテムが使用されるたびにアイテムを更新する方法を見つける必要があります。その選択が更新されるのに十分である場合、あなたはItemListenerそれを行うを書くことができます。それ以外の場合は、指定された外部アクションまたはオブザーバー/オブザーバー可能なパターンが必要になります。

于 2010-04-16T21:51:09.423 に答える