我可以通知到记录发生了改变~~~
填加一个节点本身并没有什么问题,关键是在填加后我的tree无法获得这个Model的改变~
在这里有DefaultTreeModel只是一时的权益,当然还是需要自己去做一个TreeModel,但是自己没有什么比较好的思路去完成它,希望有谁能指引一条明路
填加一个节点本身并没有什么问题,关键是在填加后我的tree无法获得这个Model的改变~
在这里有DefaultTreeModel只是一时的权益,当然还是需要自己去做一个TreeModel,但是自己没有什么比较好的思路去完成它,希望有谁能指引一条明路
reload方法重新加载一下这个节点,这样
树的显示就更新了。
有这样一段代码:其中
fnode.expand(node)是给node添加子节点的方法,通过这个方法node将拥有子节点。
如果你要全部的代码可以看一下http://dev.csdn.net/develop/article/33/33541.shtm应该能够对你有帮助。 Thread runner = new Thread()
{
public void run()
{
if (fnode != null && fnode.expand(node))
{
Runnable runnable = new Runnable()
{
public void run()
{
m_model.reload(node);
}
};
SwingUtilities.invokeLater(runnable);
}
}
};
runner.start();
只不过刷新调用的地方要有所考究
使用observer是最好的做法,但是可能要难点
也可以直接在更改的地方调用
写一个setModel和flashTree()的方法在这个类里就行了
这时候这个节点是能看见的,这是没问题的,但是这时候加在tree上的鼠标监听对这个新增加的节点,不生效!不知道该怎么解决,其实这个时候model已经改变了,tree所显示出来的节点也已经发生变化
代码是这样的:getTreeModel().reload();
getOrderTree().setModel(getTreeModel());
getOrderTree().updateUI();但是我加载在tree上的鼠标监听却对这个新增节点没有作用
那你试试看
getOrderTree().updateUI();
换成
getOrderTree().paintComponents(getOrderTree().getGraphics());
去试试这个