Javaでは、JTableでその行に含まれる指定された値を探すことで行のインデックスを取得することは可能ですか? カスタム テーブル モデルを使用しています。たとえば、3 つの列と 3 つの行を持つテーブルを考えてみましょう。
Row 1 = A, B, C
Row 2 = D, E, F
Row 3 = G, H, I
テーブルのどこかに「F」の値があることだけがわかっている場合、値「F」がある行のインデックスを見つけるにはどうすればよいですか?
テーブルモデルが利用可能な場合、総当たりの方法は、行と列でループし、指定された値 (たとえば、「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;
}
}
}
}
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;
}
念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;
}