2011-07-25 10 views
1

ArrayListから要素を追加または削除するときに、JListを更新する方法の例があります。JListとArrayListの更新

ArrayListはModelクラスの一部です。 Modelクラスは、コンストラクタを介してビュー(いくつかのスイングコンポーネントを含むJPanel、および更新したいJList)に渡されます。モデルクラスは、サーバーから受け取った値を読み取るクラスにも注入されます。サーバーからデータを受け取ったときに、model.getArrayList()。add(data)を実行して、arrayListにその一部を追加します。 arrayListにデータを追加すると、私のビューでJListを更新したいと思います。私はArrayListとJListをリンクする方法について助けてください。

+1

これは、たとえばありませんか? http://stackoverflow.com/questions/6420623/how-to-bind-arraylist-to-jlist – woliveirajr

答えて

4

独自のListModelを作成する場合は、AbstractListModelを拡張する必要がありますし、あなたのaddElementメソッドを実装するとき、あなたは(更新のためのユーザインタフェースを通知するための) -methodを呼び出す必要があり、同様:

public void addElement(MyObject obj) { 
    myArrayList.add(obj); 
    fireIntervalAdded(this, myArrayList.size()-1, myArrayList.size()-1); 
} 

カスタムListModelは次のようになります。

public class MyListModel extends AbstractListModel { 

    private final ArrayList<MyObject> myArrayList = new ArrayList<MyObject>(); 

    public void addElement(MyObject obj) { 
     myArrayList.add(obj); 
     fireIntervalAdded(this, myArrayList.size()-1, myArrayList.size()-1); 
    } 

    @Override 
    public Object getElementAt(int index) { return myArrayList.get(index); } 

    @Override 
    public int getSize() { return myArrayList.size(); } 
} 
+0

こんにちは、私はModelクラスでListModelを作成する必要がある場合、私はArrayListを必要としません。代わりにListModelを使用できますか? – wotan2009

+0

@wotan:あなたの 'Model'クラスは' AbstractListModel'を拡張する必要があり、 'ArrayList'が必要です。あなたが' ListModel'を使いたい場合にはもっと手間がかかります。 – Jonas

+0

@wotan:カスタムListModelの例を参照してください。 – Jonas

6

ListModelを使用して、JListの項目の追加と削除を制御する必要があります。チュートリアルでは、非常に便利です:あなたは、あなたがその周りにあなた自身のList Modelを構築できるのArrayListをお持ちの場合は

listModel = new DefaultListModel(); 
listModel.addElement("Jane Doe"); 

listModel.insertElementAt(employeeName.getText(), index);  

int index = list.getSelectedIndex(); 
listModel.remove(index); 

:ここ http://download.oracle.com/javase/tutorial/uiswing/components/list.html

はチュートリアルからいくつかのサンプルコードです。

+0

およびリンク例http://www.java2s.com/Code/Java/Swing-JFC/List.htm + 1 – mKorbel

+0

要素をarraylistに追加するたびにリストモデルに通知できますか? – wotan2009

+0

ArrayListをバッキングとして、独自のリストモデルを構築します。 – jzd

関連する問題