我有一个应用程序,其中JTree节点包含JProgressBars。我使用这样的函数来更新给定节点的UI:
public void setProgressForNode(DefaultMutableTreeNode node, int progressValue)
{
((ExecutionItem) node.getUserObject()).setProgressValue(progressValue);
originalModel.nodeChanged(node);
}
每当保存进度条的节点被更新为给定值时,都会调用此函数。nodeChanged(node)
应该更新UI,但它没有。有人有想法吗?我可以看到的是,在调用nodeChanged(node)
之后,不会为给定的节点调用呈现程序。如果我在“执行”过程中连续单击树中的节点,就会调用呈现器,以便进度条更新。
谢谢!
发布于 2013-12-04 06:06:00
如果我没有弄错,在我的经验中,在C#和Java的大多数对象中都有一个无效,这就是要使用的对象,那么您想要重绘一个控件/对象,比如procesbars。
如果这是可能的,那可能是这样的:
Node.Invalidate()
这应该会迫使用户界面重新绘制,不管它对你有什么好处。
发布于 2013-12-04 06:11:39
试着使用下面的方法;
DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent();
originalModel.nodeStructureChanged(parent);
https://stackoverflow.com/questions/20377330
复制相似问题