给定JScrollPane
包含使用某些LayoutManager
的千个组件。每个组件都可以处于加载或卸载状态。没有足够的资源供所有人加载。
我想在内存中只显示可见组件load()
,并且不可见组件unload()
。当用户滚动时,听众需要不断更新组件的状态:unload()
以前可见,load()
新显示。
viewPort.getVisibleComponents()
)我将准备好所有组件Y的准备好的排序列表,然后在运行时二进制搜索ViewPort
的Y以获得可以引导我看到可见的索引。由于组件Y在列表准备时间内全部返回0,因此失败。这需要有效率。
答案 0 :(得分:1)
具体而言,我将假设1000条记录,每条记录由class Record
的实例表示。每个此类Record
都应包含唯一且有意义的key
类型Key
。
获取List<Key>
,可能在后台任务中。
构建key
值的一列TableModel
。
使用此模型构建JTable
,table
。
将table
添加到合适布局左侧的JScrollPane
。
在右侧,添加一个可以Display
单个选定Record
的详细信息的面板。
让Display
包含ListSelectionListener
here,它会更新Record
中当前所选table
的详细信息。< / p>
将每个选定的Record
添加到cache,从存储中检索Record
,可能在后台任务中,只有在缓存中尚未存在时才会显示。