对象到ArrayList到JList再回来(几个问题)

时间:2015-04-08 15:13:53

标签: java xml object arraylist jlist

计划大纲: 我打算制作一个简单的Java程序,它将从一个XML文件加载Vehicle对象(Vehicle为超类,EnginedVehicle和GoodsVehicle作为子类)到一个ArrayList,然后将其显示在JList上。用户将能够使用复选框显示/隐藏不同的车辆类型,添加新的车辆类型或按下JList中的所选项目并编辑或删除它。然后程序将对象放回ArrayList,然后将其保存回XML文件。

问题:所以,我完全没有将XML文件加载到ArrayList中并将该对象放到JList上,但是让我头疼的事情正在考虑我将如何进行到:

  1. 从JList获取对象的最佳方法是什么,可以将其修改或删除并放回到ArrayList中?
  2. 如何使用复选框在JList中显示/隐藏不同类型的车辆?
  3. 我理解这可能看起来很多但是,这是我的第一篇文章,我是社区的新手,我对Java和OOP编程有相当好的知识,但我刚刚写完一个相当大的网站并回到Java很头疼。

2 个答案:

答案 0 :(得分:0)

由于您的ArrayList的大小(项目计数)与JList相等,因此您的JList将根据选择获得您感兴趣的索引。无论您是要修改还是删除项目,都要存储它所在的索引并从JList中删除该项目(您应该使用DefaultListModel)。使用此索引值从ArrayList获取对象。如果要修改,根据需要修改对象,则不必从ArrayList中删除对象进行修改,并将其放回DefaultListModel中。如果它是删除,那么只需使用您存储的索引值从ArrayList中删除该对象。

就显示(显示/隐藏)而言,清除DefaultListModel(将清除您的JList),遍历您的ArrayList并将项目添加到与您的复选框选择标准匹配的DefaultListModel。

修改

我没有考虑隐藏项目时可能修改/删除项目。为此,可能希望您的对象具有一个字段,该字段存储它们在ArrayList中的索引。这样,当您执行过滤器时,我会将“Master”ArrayList中的项目复制到可以填充DefaultListModel的子列表中。然后,在从JList中选择项目时,将相同的逻辑应用于此子列表,然后从子列表中进行更改并将其应用于“Master”ArrayList。

请注意,当您删除某个项目时,您必须从该点开始重新分配所有项目的索引位置。

我确信可能有更简洁的方法,但这是我首先想到的。

答案 1 :(得分:0)

我不知道我是否可怕的错误,但为什么要更改为JList?您是否使用JList作为参数来可视化其中的信息?如果是,为什么不使用ArrayList呢?然后,复选框仅更改列表项的可见性。所以你不必关心指数,因为它们保持不变。也可以制作新的条目...也许我错了,但我想你有一种用户浏览/改变/添加新车的GUI?