【问题标题】:Store all objects of a Jlist into a Array<Object>将 Jlist 的所有对象存储到 Array<Object>
【发布时间】:2016-01-19 21:27:10
【问题描述】:

我一直在到处搜索,但找不到解决此问题的方法。 我面临的问题很简单,我创建了一个 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 。 我花了很多时间试图弄清楚,如果有人可以帮助我,将不胜感激!

NOTE 第二个 jList 不为空,这证明了这一点:

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);
}

【问题讨论】:

  • 你有什么问题?
  • @MiserableVariable 我需要将 jList2 的对象存储到 ArrayList 中,我该怎么做?
  • 为了让每个人都能理解这个问题,你最好试着让代码的缩进更好。例如。不要遗漏 '}' 以匹配最后一节中的 '{'...(我希望这不会让人觉得太苛刻 :)
  • @JonasN 只是复制代码的问题,我一定错过了最后一个 '}' .. 但已编辑,谢谢 :)

标签: java arraylist jlist


【解决方案1】:

使用 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]

【讨论】:

  • 我应该将它投射到物品中吗??
  • 它不会将对象存储到 arraylist 中,在那部分代码之后我实现了一个“测试代码”来检查 arraylist 是否为空,并且该 arraylist 仍然是空的
  • 从上面生成的 ArrayList 是空的,因为它从中获取数据的 JList 是空的。您应该从不为空的 JList 开始。您应该在调试器中打印或检查 jl.getModel().getSize() 的值。示例更新为非空开始并打印其结果。
  • 不幸的是,截图并不能真正证明什么。我看不到 GUI 背后的代码,所以我看不到哪些变量在被访问时在执行时具有哪些值。
  • int counterelement = StoreBasketList_jList.getModel().getSize(); System.out.println("The number of items in jList: "+counterelement); /*proof that jlist is not empty */ for (int i = 0; i &lt; StoreBasketList_jList.getModel().getSize(); i++) { //Item itemtest = new Item(); //itemtest.setItemID(9); ItemInBasket.add( (Item)StoreBasketList_jList.getModel().getElementAt(i)); // ItemInBasket.add() } 这是代码的一部分
猜你喜欢
  • 2022-11-04
  • 2012-03-19
  • 1970-01-01
  • 2014-09-30
  • 2015-08-20
  • 2018-07-03
  • 2023-03-30
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多