0

我有一个JTable显示日志文件的内容,第一列是一个以毫秒为单位的时间戳(例如 10:31:54.531)。数据已按此列排序。我想让用户滚动到他感兴趣的时间戳。

这是我想做的Java片段:

String myTimestamp = "10:31:54.531";
Integer myRowIndex = getRowIndexFromStringTimestamp(myTimestamp);
myJTable.getSelectionModel().setSelectionInterval(myRowIndex, myRowIndex);
myJTable.scrollRectToVisible(new Rectangle(myJTable.getCellRect(myRowIndex, 0, true)));

但如何实施getRowIndexFromStringTimestamp

谢谢

4

2 回答 2

3

您需要对表格的引用并使用组合JTable#getRowCountJTable#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;

这样做的问题是随着数据的增加会变慢。

于 2013-01-21T19:56:37.270 回答
3
  • 我认为改用过滤比循环和搜索XxxTableModelJTables view比较所需值更简单

  • 必须为(java.util.Date)的列包含)值设置正确的ColumnClassDate(DateTime

  • 否则必须在XxxTableModelor中循环和搜索JTables view,并比较值

于 2013-01-21T18:51:08.220 回答