基本上,我有一个CD库,其中包含CD ArrayList<>的实例,然后我得到了一个人ArrayList<>可以“借用”CD的......从该CD中添加到可用或不可用的列表中。
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);
三江源。
答案 0 :(得分:2)
您的CDStore
可以实施界面ListModel
。您可以使用CDStore
作为JList
的模型。
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()
}
}
答案 1 :(得分:1)
如果你有一个方法来检索CD名称,我们称之为getCDName(), 你可以尝试
String[] entries = new String[discsArray.length];
int index = 0;
for (CD cd: discsArray) {
entries[index++] = cd.getCDName();
}
这应填写您的条目数组。