Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象到ArrayList到JList再返回(几个问题)_Java_Xml_Object_Arraylist_Jlist - Fatal编程技术网

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

Java 对象到ArrayList到JList再返回(几个问题),java,xml,object,arraylist,jlist,Java,Xml,Object,Arraylist,Jlist,课程大纲: 我计划制作一个简单的Java程序,将Vehicle对象(Vehicle是超类,EngineedVehicle和GoodsVehicle是子类)从XML文件加载到ArrayList中,然后在JList上显示。用户将能够使用复选框显示/隐藏不同的车辆类型,添加新的车辆类型或按JList中的选定项目并编辑或删除它。然后,程序将把对象放回ArrayList,然后将其保存回XML文件 问题:因此,我完全可以将XML文件加载到ArrayList并将该对象放到JLList中,但让我头疼的是,我正在

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

问题:因此,我完全可以将XML文件加载到ArrayList并将该对象放到JLList中,但让我头疼的是,我正在考虑如何:

  • 从JList返回对象以备修改或删除并放回ArrayList的最佳方法是什么
  • 如何使用复选框在JList中显示/隐藏不同类型的车辆

  • 我理解这可能看起来很多,但是,这是我的第一篇文章,我是这个社区的新手,我对Java和OOP编程有相当好的了解,但我刚刚完成一个相当大的网站的编写,回到Java是一件令人头痛的事。

    因为您的ArrayList的大小(项目数)应该与您的JLList相同,您的JList将根据选择列出您感兴趣的索引。无论是否要修改或删除该项,请存储该项所在的索引,并从JList中删除该项(您应该使用DefaultListModel)。使用此索引值从ArrayList获取对象。如果要修改,请根据需要修改对象,不必从ArrayList中删除对象进行修改,然后将其放回DefaultListModel中。如果是delete,那么只需使用存储的索引值从ArrayList中删除该对象

    至于显示(显示/隐藏),请清除DefaultListModel(这将清除JList),遍历ArrayList并将符合复选框选择条件的项目添加到DefaultListModel

    编辑:

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

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


    我相信可能有一种更干净的方法可以做到这一点,但这是我首先想到的。

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

    您真的需要切换到JList然后再切换回来吗?我看不出有这个必要?我想没有吧?如果你不这么认为,我愿意接受你的建议。我只是在想,如果我有一个方法将对象保存回XML,那么将它们都保存在同一个ArrayList中会更容易。在我去做之前,我只是想在脑子里计划一下。首先,谢谢你的回复。我没有想到为了修改而将其从ArrayList中删除,只是简单地更改其中已有的内容。因此,假设JList中的项目是:1。一辆小汽车。一辆自行车。一辆摩托车,但在我的列表中,这辆车的价值是8。JList索引是将1作为其在JList中的第一个索引显示,还是将8作为其在ArrayList中的第八个索引显示?抱歉,如果这听起来让人困惑,哈哈。因为JList的大小取决于显示或隐藏的项目。它将在JList中显示索引0。我没有考虑到当您从复选框选择中隐藏项目时,您可能需要修改/删除项目。对不起,我可能没有说清楚。但是是的,那将是零哈哈。因此,您是否知道解决方法,以便我可以获得select JList项的ArrayList索引?JList是我想要使用的GUI可视化。因此,JList和复选框将用于浏览ArrayList的内容。我可能会让自己更难,但我不知道。顺便说一句,感谢您的回复。据我所知,JList不是gui,它需要一个(示例)JScrollPane来可视化。你能提供一些代码吗,否则这将是一个麻烦