使用JList和ArrayList的Java Swing<&燃气轮机;

使用JList和ArrayList的Java Swing<&燃气轮机;,java,swing,arraylist,jlist,Java,Swing,Arraylist,Jlist,基本上,我有一个CD库,它保存CD ArrayList的实例,然后我有一个people ArrayList,它可以“借用”CD。。。从该CD添加到可用或不可用列表 public CDStore(String storeNme) { storeName = storeNme; discsArray = new ArrayList<CD>(); peopleArray = new ArrayList<Person>();

基本上,我有一个CD库,它保存CD ArrayList的实例,然后我有一个people ArrayList,它可以“借用”CD。。。从该CD添加到可用或不可用列表

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

谢谢。

如果您有一个检索CD名称的方法,我们就称它为getCDName(), 你可以试试

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

这将填充您的entries数组。

如果您有一个检索CD名称的方法,我们将其称为getCDName(), 你可以试试

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

这将填充您的条目数组。

您的
CDStore
可以实现该接口。然后,您可以将
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实现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()
    }
}
公共类CDStore实现ListModel{
私有字符串storeName;
私有列表光盘;
私有列表peopleArray;
公共CDStore(字符串存储NME){
storeName=storeNme;
discsArray=newarraylist();
peopleArray=newArrayList();
}
//你的方法
//列表模型
私有列表侦听器=新的ArrayList();
public void addListDataListener(ListDataListener l){
添加(l);
}
公共void removeListDataListener(ListDataListener l){
删除(l);
}
受保护的无效fireContentsChanged(){
for(ListDataListener l:listener){
l、 contentsChanged(新的ListDataEvent(此,ListDataEvent.CONTENTS_已更改,0,discsArray.size()-1));
}
}
公共对象getElementAt(int索引){
返回discsArray.get(索引);
}
公共int getSize(){
返回discsArray.size()
}
}

您的
CDStore
可以实现该接口。然后,您可以将
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实现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()
    }
}
公共类CDStore实现ListModel{
私有字符串storeName;
私有列表光盘;
私有列表peopleArray;
公共CDStore(字符串存储NME){
storeName=storeNme;
discsArray=newarraylist();
peopleArray=newArrayList();
}
//你的方法
//列表模型
私有列表侦听器=新的ArrayList();
public void addListDataListener(ListDataListener l){
添加(l);
}
公共void removeListDataListener(ListDataListener l){
删除(l);
}
受保护的无效fireContentsChanged(){
for(ListDataListener l:listener){
l、 contentsChanged(新的ListDataEvent(此,ListDataEvent.CONTENTS_已更改,0,discsArray.size()-1));
}
}
公共对象getElementAt(int索引){
返回discsArray.get(索引);
}
公共int getSize(){
返回discsArray.size()
}
}

尝试了您所说的,但我们正在从另一个类调用discsArray。。。但无论出于何种原因,它都不允许我使用discsArray并要求我创建方法等。是否有任何方法可以解决此问题?尝试了您所说的,但我们从另一个类调用discsArray。。。但无论出于什么原因,它都不允许我使用光盘,并要求我创建方法,等等。有没有办法解决这个问题?你只是想得到列表中显示的CD的名称吗?基本上,是的。。。只是想让discsArray的元素成为元素的中心你只是想得到列表中显示的CD的名称吗?基本上,是的。。。只需要将DISSCORE的元素作为元素条目+ 1也考虑扩展<代码>抽象ListMase<代码>,以利用现有方法的一些实现。+ 1还考虑扩展<代码> ActudiistListMys<代码>以充分利用现有方法的一些实现。