基于Java的轻量级表替代方案

基于Java的轻量级表替代方案,java,swing,Java,Swing,我们正在为我们的应用程序使用表库。如果我们在表中加载10000x100条记录,它将消耗应用程序内存的3/4,应用程序将挂起 谁能推荐一个轻量级Java Swing表,它消耗更少的内存,并具有过滤、排序等功能。轻量级Java表是JTable的。如果使用extend AbstractTableModel并使用分类器和渲染器,您几乎可以做任何您喜欢的事情。由于模型为视图提供了数据,因此您永远不需要在加载所有信息时耗尽内存 当您说10000x100时,如果100是列数,那么对于平均监视器来说可能有点太多

我们正在为我们的应用程序使用表库。如果我们在表中加载10000x100条记录,它将消耗应用程序内存的3/4,应用程序将挂起


谁能推荐一个轻量级Java Swing表,它消耗更少的内存,并具有过滤、排序等功能。

轻量级Java表是JTable的。如果使用extend AbstractTableModel并使用分类器和渲染器,您几乎可以做任何您喜欢的事情。由于模型为视图提供了数据,因此您永远不需要在加载所有信息时耗尽内存

当您说10000x100时,如果100是列数,那么对于平均监视器来说可能有点太多了。你可能需要在那里打折或者水平滚动

如果让模型从数据库中获取数据,则永远不需要加载整个表,因此JTable宽度为50-100甚至更大可能没有问题

小心:为了使名为“jTable1”的JTable水平滚动良好,请设置

jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
JTable类有一个分类器和过滤


更多信息,请阅读

最有可能的问题与您的域模型有关。。即使域对象有100个字段,10000个对象也不算太多。但如果对象图太深太复杂,对象数量将增加到数十亿而不是数百万。。因此,我强烈建议您查看您的域模型..

表或无表。将10000X100条记录加载到内存中听起来像是糟糕的设计,尤其是在内存有限的情况下


如果适合您的应用程序,请尝试使用Flyweight设计模式,如果不适合,请尝试每次只加载表的相关部分。

我刚刚给出了示例,实际上我们最多有50-60列。您可以推荐一些具有排序、筛选和分页功能的第三部分表库吗。JXTable是一个很好的扩展,可能对您有用@对不起,JTable一点也不轻。它几乎是一个人能得到的最臃肿的东西。您可能确实想在Sun的“圣诞树”演示应用程序上使用google,这很好地解释了为什么当您需要处理大量数据(例如,不断更新财务数据)时,默认JTable不进行剪切。我不敢相信你在这个因果报应的答案上得到了3张毫无意义的选票。这里没有人谈论圣诞树,也没有人在不断更新任何东西。阅读问题:他想显示10000x100条记录---轻量级组件——除了JApplet、JDialog、JFrame和JWindow之外,Project Swing中的所有组件都是轻量级组件。轻量级组件与抽象窗口工具包(AWT)不同,它不依赖于本地窗口工具包。我们不会加载那么多列。您知道任何第三方tablelib会消耗更少的内存吗。行大约为10000,但列大约为50-60列。你能推荐任何消耗更少内存和重量的第三部分tablelib吗?我不建议任何其他table组件消耗更少内存。。该漏洞与域模型有关,而不是与表组件有关。虽然圣诞节快到了,但投票人似乎正在为圣诞节做准备。无论如何,我会投票支持你的答案,因为我认为它是正确的。@Costis Aivalis谢谢你的解释。我相信downvoter应该解释他们的推理,通过这种方式我可以知道我的答案有什么错误。你知道关于科学网格的任何事情吗?在表模型中加载数据时,它会消耗内存。表和表模型有什么区别吗?模型帮助在表中添加数据?@Joey:bzzzt,错误,伪造,未提供信息。在处理大量数据时,JTable的性能实际上是可怜的。您确实想阅读以下Sun文档:在很多情况下,有很多原因使得JTable表现得非常糟糕。