日期:2014-05-20  浏览次数:20729 次

在使用Swing中的JTree的时候由于数据量过大,应该如何优化来减少加载时间?
如题,但是由于该树还有搜索功能,所以不可以使用多级加载的方式来做,那请问还有什么方式可以提高加载的速度呢?

------解决方案--------------------
利用线程异步处理,这样会好些,但是lz为啥一定要在Jtree加载时就弄那么大的数据呢
------解决方案--------------------
分段触发加载
------解决方案--------------------
既然有搜索,你必然要有一个完整的数据模型
但是你没必要把这个完整的数据模型直接对应到显示用的个JTree上
你可以搜索的时候在那个完整的数据模型上搜索
搜到之后,再把这个节点及其所有父节点加载到这个JTree上

------解决方案--------------------
我想到的是,LZ是否可以使用分次加载的策略

但是,在用户搜索的时候,不是在树上搜索,而是在数据库中搜索

然后反查树节点的所有子节点。

然后再把数据展示到树上。
------解决方案--------------------
探讨

我想到的是,LZ是否可以使用分次加载的策略

但是,在用户搜索的时候,不是在树上搜索,而是在数据库中搜索

然后反查树节点的所有子节点。

然后再把数据展示到树上。

------解决方案--------------------
每次点击只加载它的子节点
------解决方案--------------------
数据量多大?

用多线程加载可以考虑一下,每一个一级子节点及其子孙节点用一个线程来处理,可以减少很多时间。搜索功能和加载方式无关,因为搜索也得等tree绘制完成之后才能进行。
------解决方案--------------------
探讨
既然有搜索,你必然要有一个完整的数据模型
但是你没必要把这个完整的数据模型直接对应到显示用的个JTree上
你可以搜索的时候在那个完整的数据模型上搜索
搜到之后,再把这个节点及其所有父节点加载到这个JTree上