如果没有扩展JTree,那么在更改树中的对象之后还是强制更新模型?

时间:2012-04-17 14:43:22

标签: java swing user-interface jtree

我有一个存储“ShipmentItem”的JTree,它们上面的.toString()显示数量,然后显示ShipmentItem的名称。在某些时候,我一次更改多个项目的数量,但是在我实际点击该特定树节点之前,toString()不会刷新。我不想将JTree扩展为使用'Property Fired'我只是希望能够刷新它以便它显示更新。

我尝试了jtree.setModel(tree.getModel()),这似乎根本不起作用。

1 个答案:

答案 0 :(得分:3)

如果您将某些内容更改为TreeModel(通过调整ShipmentItem个对象),则必须确保TreeModel触发正确的事件。这将导致JTree重绘正确的部分。例如,如果您从DefaultTreeModel开始,则当节点的对象发生更改时,您的扩展程序应调用nodeChanged

注意:您无需调整toString方法以进行正确渲染。您要查找的概念是TreeCellRenderer(有关详情,请查看Swing tutorial