我一直在到处寻找,但找不到解决这个问题的方法。 我面临的问题很简单,我创建了一个 ArrayList ..并将该对象转移到 Jlist1 中(不知道我是否做错了什么,但我已经转移了 ArrayList 的所有对象,并将其作为字符串对象附加在此 jList 上字段)。我有一个按钮,用于将此 jList1 的选定项目传输到另一个 jList2 中。我想为该按钮提供存储从 jList1 传输到 jList2 中的对象的功能... 下面我将打印我解释的问题的最重要部分。
jList1代码的填充:
ArrayList<Item> itemlist = items.getItems();
for(Item d : itemlist){
itemlist_model.addElement( d.getItemID()+" "+ d.getItemName()+" " +d.getItemPrice() + "$" );
}//end for
ItemList_jList.setModel(itemlist_model);
}
我编写的用于将所选项目从 jList1 传输到 jList2 的代码:
for(Object d: ItemList_jList.getSelectedValuesList()){
//System.out.println(d);
basketlist_model.addElement(Arrays.toString(ItemList_jList.getSelectedValues()) + "" );
}
StoreBasketList_jList.setModel(basketlist_model);
}
我正在尝试改进的代码,以便将 jList2 对象存储到 ArrayList 中:
ArrayList<Item> ItemInBasket = new ArrayList<Item>();
int len = basketlist_model.getSize();
for (int i = 0; i < len; i++) {
bw.write(basketlist_model.getElementAt(i).toString());
ItemInBasket.add((Item) basketlist_model.getElementAt(i));
}
为了使代码更容易理解: jList1 是 ItemList_jList .. jList2 是 StoreBasketList_jList .. 我试图存储这些对象的 ArrayList 是 ArrayList ItemInBasket 。 我花了很多时间试图弄清楚,如果有人能帮助我,我将不胜感激!
int counterelement = StoreBasketList_jList.getModel().getSize(); System.out.println("The number of items in jList: "+counterelement);
for (int i = 0; i < StoreBasketList_jList.getModel().getSize(); i++) {
ItemInBasket.add( (Item)StoreBasketList_jList.getModel().getElementAt(i));
System.out.println(i);
}
最佳答案
使用 JList.getModel() https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html#getModel--
JList jl = new JList(new Object[]{"a","b","c"});
System.out.println("jl.getModel().getSize() = " + jl.getModel().getSize());
ArrayList<Object> arrayList = new ArrayList<Object>();
for (int i = 0; i < jl.getModel().getSize(); i++) {
arrayList.add(jl.getModel().getElementAt(i));
}
System.out.println("arrayList = " + arrayList);
打印输出:
jl.getModel().getSize() = 3
arrayList = [a, b, c]
关于java - 将 Jlist 的所有对象存储到 Array<Object> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887235/