2011-04-14 152 views
0

我正在创建一个将文件从xml转换为pptx的应用程序。用户将项目从JTree拖动到JList创建幻灯片。我设法让所有的工作都能正常工作,但JList似乎在下降之后消失。我知道因为打印语句而收到放置,并且它不为空。我相信JList仍然在那里,因为我可以打印数组中的项目。通过测试,我认为我创建的自定义DefaultListModel有问题。它由于某种原因在drop之后没有调用update/redraw/revalidate,或者因为我注意到getSize和getElementAt方法在放下之后停止调用而释放了它的动作侦听器。但是,如果我将项目添加到应用程序init的ListModel,它确实可以正确绘制。Java List在拖放后停止更新

我一直在浏览ListModels和TransferHandlers的所有文档,但一直没有能够获得列表显示后删除。我的模型是否缺少Override或者没有以某种方式处理侦听器?

完整的源: http://code.google.com/p/app4args/

可能有问题的文件: http://code.google.com/p/app4args/source/browse/trunk/src/edu/gatech/app4args/utils/CustomListModel.java

要重新创建:

  1. 下载最新版本/源&示例XML从下载项目工地部分文件
  2. 运行应用程序,选择文件>导入,浏览到示例xml文件
  3. 创建新的幻灯片:幻灯片>新建幻灯片,选择标准在幻灯片内容的浏览(任何作品)
  4. 将JTree的项目,从图书馆到一个列表
  5. 列表不更新,点击它或其他地方的应用程序,回到清单上会让它消失

感谢

+0

JList组件是否从组件层次结构中删除?看看它的父容器是否仍然有对它的引用。 – 2011-04-14 19:35:42

+0

我相信家长仍然有一个引用它,因为我可以放下尽可能多的项目,因为我想要列表,它仍然添加它们,我可以通过打印语句看到,但它仍然是看不见的。 – alunsford3 2011-04-14 19:42:16

+0

为了更快得到更好的帮助,请发布[SSCCE](http://pscode.org/sscce.html)。 – 2011-04-14 20:33:22

回答

0

原来我重写在CustomListModel方法是是有关如何画一个列表的内容更新。我删除了这些并重写了一些东西,现在它正在绘制正确。