2012-03-07 12 views
0

基本的にCD ArrayListのインスタンスを保持するCDライブラリを持っています<>次に、ArrayList <> CDを "借りる"ことができる人が見つかりました。そのCDから利用可能な、または利用できないリストに追加されます。ArrayListでJListを使用するJava Swing <>

public CDStore(String storeNme) { 
     storeName = storeNme; 
     discsArray = new ArrayList<CD>(); 
     peopleArray = new ArrayList<Person>(); 
    } 

JListを使用することで、リストの要素をCDのインスタンスと同じにしようとしています。

だから... ...リスト内ITEM1がインデックス0のCD、項目2 =インデックス1というように....

String[] entries = ??????????????????; 
     JList listOfCD = new JList(entries); 
     listOfCD.setVisibleRowCount(4); 
     JScrollPane listPane = new JScrollPane(listOfCD); 
     JTextField valueField = new JTextField("None", 7); 

ありがとうだろう。あなたはCDの名前を取得する方法を持っている場合は

+0

リストに表示されるCDの名前を取得しようとしていますか? – bvulaj

+0

本質的にええええええええええええええええええええええええんの要素を要素の項目にしたい –

答えて

2

CDStoreは、ListModelというインターフェースを実装できます。 JListのモデルとしてCDStoreをモデルとして使用することができます。ここで

CDStore store = new CDStore("Store"); 
// add some CDs 

JList listOfCD = new JList(store); 
listOfCD.setVisibleRowCount(4); 
JScrollPane listPane = new JScrollPane(listOfCD); 
JTextField valueField = new JTextField("None", 7); 

CDStore implements ListModelの実装例です。 discsArrayが変更されるたびに、メソッドfireContentsChangedを呼び出す必要があります。

public class CDStore implements ListModel { 
    private String storeName; 
    private List<CD> discsArray; 
    private List<Person> peopleArray; 

    public CDStore(String storeNme) { 
     storeName = storeNme; 
     discsArray = new ArrayList<CD>(); 
     peopleArray = new ArrayList<Person>(); 
    } 

    //your methods 

    //ListModel 
    private List<ListDataListener> listener = new ArrayList<ListDataListener>(); 

    public void addListDataListener(ListDataListener l) { 
     listener.add(l); 
    } 

    public void removeListDataListener(ListDataListener l) { 
     listener.remove(l); 
    } 

    protected void fireContentsChanged() { 
     for (ListDataListener l : listener) { 
      l.contentsChanged(new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, discsArray.size()-1)); 
     } 
    } 

    public Object getElementAt(int index) { 
     return discsArray.get(index); 
    } 

    public int getSize() { 
     return discsArray.size() 
    } 
} 
+0

+1 'AbstractListModel'を拡張して、いくつかのメソッドの既存の実装を活用することも検討してください。 – trashgod

1

、あなたのエントリの配列を記入すべき

String[] entries = new String[discsArray.length]; 
int index = 0; 
for (CD cd: discsArray) { 
    entries[index++] = cd.getCDName(); 
} 

これを試すことができ 、のはgetCDName()を呼び出してみましょう。

+0

あなたが言ったことを試してみたが、別のクラスのディスクを呼び出すよ...何らかの理由でディスクを使うことを許さない。私はメソッドを作成するなど、これを回避するためにとにかくありますか? –

関連する問題