Java 如何将JTable滚动到特定值?
我有一个Java 如何将JTable滚动到特定值?,java,swing,scroll,jtable,Java,Swing,Scroll,Jtable,我有一个JTable显示日志文件的内容,第一列是以毫秒为单位的时间戳(例如10:31:54.531)。 此列已对数据进行排序。 我想允许用户滚动到他感兴趣的时间戳 下面是我想做的一个Java片段: String myTimestamp=“10:31:54.531”; 整数myRowIndex=getRowIndexFromStringTimestamp(myTimestamp); myJTable.getSelectionModel().setSelectionInterval(myRowInd
JTable
显示日志文件的内容,第一列是以毫秒为单位的时间戳(例如10:31:54.531)。
此列已对数据进行排序。
我想允许用户滚动到他感兴趣的时间戳
下面是我想做的一个Java片段:
String myTimestamp=“10:31:54.531”;
整数myRowIndex=getRowIndexFromStringTimestamp(myTimestamp);
myJTable.getSelectionModel().setSelectionInterval(myRowIndex,myRowIndex);
scrollRectToVisible(新矩形(myJTable.getCellRect(myRowIndex,0,true));
但是如何实现getRowIndexFromStringTimestamp
谢谢- 我认为,与在
或XxxTableModel
中循环和搜索比较所需的值相比,这是最简单的JTables视图
- 必须为包含
)值的列设置适当的值日期(DateTime
- 否则必须在
或XxxTableModel
JTables视图中循环搜索,并比较值
- 我认为,与在
或XxxTableModel
中循环和搜索比较所需的值相比,这是最简单的JTables视图
- 必须为包含
)值的列设置适当的值日期(DateTime
- 否则必须在
或XxxTableModel
JTables视图中循环搜索,并比较值
JTable\getRowCount
,JTable\getValueAt
int matchIndex = -1;
for (int rowIndex = 0; rowIndex < myJTable.getRowCount(); index++) {
Object value = myJTable.getValueAt(rowIndex, colIndex);
if (value.equals(timestamp)) { // Or what ever comparison you need..
matchIndex = rowIndex;
break;
}
}
return matchIndex;
int-matchIndex=-1;
对于(int rowIndex=0;rowIndex
这样做的问题是,数据越多,速度就会越慢。您需要一个表的引用,并使用组合
JTable\getRowCount
,JTable\getValueAt
int matchIndex = -1;
for (int rowIndex = 0; rowIndex < myJTable.getRowCount(); index++) {
Object value = myJTable.getValueAt(rowIndex, colIndex);
if (value.equals(timestamp)) { // Or what ever comparison you need..
matchIndex = rowIndex;
break;
}
}
return matchIndex;
int-matchIndex=-1;
对于(int rowIndex=0;rowIndex
问题是,数据越多,速度就会越慢。谢谢!我将尝试过滤并在过滤后获得一行索引(在模型中),然后我可以删除过滤并滚动到此行索引,谢谢!我将尝试过滤并在过滤后获得一行索引(在模型中),然后我可以删除过滤并滚动到此行索引。谢谢,我将尝试一下。用户不应该加载超过150k行,这大约是一天的数据(他们更容易加载一整天,然后在不同的时间点跳转),二进制搜索不合适吗?条目毕竟是排序的。@lhballoti假设模型中的数据是排序的,是的。我刚刚尝试了它(没有二进制搜索),在150k行上的性能很快,所以这对我很有用!谢谢,我试试看。用户不应该加载超过150k行,这大约是一天的数据(他们更容易加载一整天,然后在不同的时间点跳转),二进制搜索不合适吗?条目毕竟是排序的。@lhballoti假设模型中的数据是排序的,是的。我刚刚尝试了它(没有二进制搜索),在150k行上的性能很快,所以这对我很有用!