有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将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) 个答案

  1. # 1 楼答案

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

    问题是,数据越多,速度就会越慢

  2. # 2 楼答案

    • 我认为use Filtering instead比在XxxTableModelJTables view中循环和搜索以比较所需的值更容易

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

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