3

我想可视化一组线程,例如:Set<ThreadInfo>. 我选择Set,因为 JVM 中的每个线程都是独一无二的。选择在 Java Swing 中使用组件 JTable 显示它时,我遇到了一些问题。

我需要实现一个 TableModel。TableModel 依赖于getValueAt(int row, int col)setValueAt(Object o, int row, int col)为了传播更改的值。

但是如何使用 Set 作为数据模型来实现这些方法呢?对于列表,我会说 row = list index,但对于集合,我无法对元素顺序做出假设。

4

4 回答 4

3

我会坚持使用 List ,因为可靠的排序在表格的支持中相当重要。如果做不到这一点,您可以使用诸如TreeSet之类的排序集。

于 2011-04-07T15:34:15.833 回答
2

确定您希望线程如何排序,并在正确排序的列表中创建该集合的副本。将该列表用于模型。当集合更改时,使用新排序的数据刷新您的列表。

于 2011-04-07T15:35:16.153 回答
0

Set 没有提供通过索引获取 Object 的方法。

你应该使用 List 来做你想做的事。

或者迭代元素,直到通过参数传递的索引进入'int row'(避免这种解决方案)。

于 2011-04-07T15:43:27.257 回答
0

表格本质上是显示列表,底层数据模型通常是 Vector 的 Vector 或 Object[][] 数组。因此,在这种情况下,您需要将您的 Set 转换为 List (因此您需要两个保持同步的数据结构),并且您需要合理的随机访问 - 一个小的 Set 可能可以很好地迭代并找到东西,但是任何显着的大小将是一个问题,因为 JTable 在某些情况下会经常询问。

于 2011-04-07T15:45:30.393 回答