0

这是我第一次来这里,如果我有任何错误,请告诉我!

所以,我有一个树表(一些修改后的版本以满足我对 aephyr 的需求 - http://code.google.com/p/aephyr/)最终将有数十万行 - 真的,因为该表用于接收消息,它永远不会结束。因此,我必须设法将信息保存在磁盘上,并且仅在用户想要查看时才加载。我在表的根目录中最多保留 100 个子节点,并通过单击表开头或结尾的两个特殊节点来向上或向下加载一些节点。显然,这不是用户友好的,如果您在节点 10 中并且想要滚动到例如 2000,这会很烦人。

为了更容易使用,我想要一个滚动条,它的位置会告诉我必须加载哪些节点。问题是,无论我为 getRowCount() 返回什么,我表的 JScrollPane 中的默认滚动条似乎只有 100 个节点。我设法创建了另一个看起来应该的 JScrollBar,并使其滚动到我想要的位置,但由于没有绑定到表格或滚动窗格,它不会响应滚动视口或鼠标滚轮。

比,我的问题是:任何人都知道如何使原始 JScrollPane 的滚动条看起来像我想要的那样,所以我不必重新发明轮子来响应表、视口和滚动条中的所有可能事件?

如果需要,我可以尝试制作一些示例代码,但这需要我一些时间,我现在没有的东西 =\

提前感谢!

[编辑]

我用我的问题创建了一个示例代码......不是很好,但我认为足以让你理解我的问题是什么......我在 Eclipse 中有 Aephyr 项目,并在其中创建了一个新的“LazyTableTest”包。 .. 包的源代码在这个 zip 文件中: https ://docs.google.com/file/d/0B4Ti8_BMZvD2b2dtY05GWkxFVGs/edit?usp=sharingt

运行 DemoTable - 它将创建一个包含 2000 个条目的文件,并将它们显示在一个表中(文件创建的初始化有点慢......)。框架包含两个滚动条: - 内部是表的默认值(对于 100 个节点) - 外部是我自己的。直接移动旋钮时,它按预期工作(+一些错误)。当动作来自滚轮或视口时,什么都不会发生 - 我没有为此设置任何东西,而且,如前所述,不想在这个上重新发明轮子......所以,我尝试用我的滚动来 setVerticalScrollBar栏,但它不再起作用(取消注释 DemoTable.java 中的第 528 行)。

想法?!

4

0 回答 0