如何将JTable滚动到特定值?

时间:2013-01-21 18:30:40

标签: java swing scroll jtable

我有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

谢谢

2 个答案:

答案 0 :(得分:3)

  • 我认为use Filtering instead最简单,只需在XxxTableModelJTables view中进行循环和搜索,以便比较所需的值

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

  • 否则必须在XxxTableModelJTables view中循环搜索并比较值

答案 1 :(得分: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;

使用更多数据时,问题会变慢。