仅使用行中包含的值在JTable中获取行索引?

时间:2013-01-07 13:29:00

标签: java swing indexing jtable row

在Java中,JTable是否可以通过查找该行中包含的指定值来获取行的索引?我正在使用自定义表模型。例如,考虑一个包含三列和三行的表:

Row 1 = A, B, C
Row 2 = D, E, F
Row 3 = G, H, I

如果我所知道的是表格中某处有“F”值,我怎样才能找到值为“F”的行的索引?

3 个答案:

答案 0 :(得分:7)

如果表模型可用,则蛮力方式是按行和列循环,并将给定值(例如,“F”)与getValueAt(row, column)的结果进行比较。示例代码:

 int getRowByValue(TableModel model, Object value) {
    for (int i = model.getRowCount() - 1; i >= 0; --i) {
        for (int j = model.getColumnCount() - 1; j >= 0; --j) {
            if (model.getValueAt(i, j).equals(value)) {
                // what if value is not unique?
                return i;
            }
        }
    }
 }

答案 1 :(得分:2)

 private int returnRowIndexForValue(final String value) { 
      for (int i = 1; i <= table.getRowCount(); i++)
           for(int j = 1; j <= table.getColumnCount(); j++)
                if (table.getValueAt(i, j).equals(value))
                     return i;
 }

答案 2 :(得分:1)

如果multiple rows包含该值,则返回Integer List.

private List<Integer> getRowIndexesOfValue(String value, JTable table) {

   List<Integer> rowNumbers = new ArrayList<Integer>();

   for(int rowCount = 0; rowCount < table.getRowCount(); rowCount++) {
      for(int columnCount = 0; columnCount < table.getColumnCount(); columnCount++) {
          if(table.getvalueAt(rowCount, columnCount).toString().equals(value)) {
             rowNumbers.add(rowCount);
             break;  
          }
       }
    }
    return rowNumbers;
}