java - 非常大的对象集合的客户端 View 。如何优化?

标签 java swing user-interface ejb thick-client

我有 3 层 EJB 应用程序,我需要在胖客户端(桌面 Java 应用程序)上创建一个 View ,以显示非常大的对象集合(超过 5000 个订单)。每个对象都有子属性,这些子属性也是复杂的对象,例如:

class Address
{
 String value 
 // other properties
}

class Order
{
 public String Number

 // this is collection of complex object and I need first and last object to show it's
 // properties in view
 public List<Address> getAddresses()

 // other properties
}

View 是一个订单表:

数量 |首地址 |最后地址 | ...

我的第一次尝试是加载完整的订单列表(没有子属性),然后在需要显示时动态下载子对象。但是当我有 10000 个订单并开始快速滚动时,UI 变得没有响应。

然后我尝试加载所有需要在表格中显示的订单和所有子项,但 UI 变得非常沉重和缓慢,可能是因为内存成本)。而且它根本不是胖客户端,因为我几乎所有的数据都是从 db 下载的。

解决此任务的最佳做法是什么?

最佳答案

假设您使用的是 JTable作为合适的 TableModel 的 View ,使用 SwingWorker 查询数据库和 publish() 结果到达时。为简单起见,这个 example只需以 10 个为一组获取随机数据。请注意,随着数据的积累,UI 会保持响应。

关于java - 非常大的对象集合的客户端 View 。如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785480/

相关文章:

java - 将图像添加到重叠线条的 JTextPane 以节省空间

Java 可调整大小的 JLabel 图标不断变大

java - 如何禁止在 JFileChooser 中编辑目录名称?

java - 新创建的图形对象仅在调整框架大小后显示

java - 可视化递归

java - 如何将 JPanel 放在另一个 JPanel 上?

java - JList 中选定的值

java - JDK 1.6 是否附带了集成的 JAX-RS 引用实现?

java - 通过java读取xml中的二进制数据cdata

python - 如何为 QTableView 列设置标题标签?