Если вы настаиваете на предоставлении всего содержимого таблицы пользователю, а затем разрешаете этому пользователю выбирать нужные строки таблицы для дальнейшей обработки в другом месте вашего кода, вы можете обнаружить, что этот небольшой метод может помочь вам:
public String[] getJTableSelectedRowsData (JTable theTable) {
// Gets the data contained within all Selected Table Rows.
// Each array element within the returned string array will
// contain a Pipe delimited data string of each selected row.
int[] selectedRows = theTable.getSelectedRows();
String[] resultArray = new String[selectedRows.length];
DefaultTableModel dtm = (DefaultTableModel) theTable.getModel();
int nCol = dtm.getColumnCount();
for (int i = 0; i < selectedRows.length; i++) {
String resultString = "";
for (int j = 0 ; j < nCol ; j++) {
resultString+= resultString.equals("") ? dtm.getValueAt(selectedRows[i],j).toString() :
"|" + dtm.getValueAt(selectedRows[i], j).toString();
}
resultArray[i] = resultString;
}
return resultArray;
}
Конечно, вы можете изменить этот метод, чтобы он возвращал все, что вы хотите. В качестве примера того, как вы можете использовать этот метод:
String[] selectedRows = getJTableSelectedRowsData(jTable1);
for (String selectedRow : selectedRows) {
System.out.println(selectedRow);
}
Если это действительно только от определенной строки в таблице до конца таблицы, то вы можете попробовать что-то вроде этого:
public String[] getAllRowsFromSelected(JTable theTable) {
// Gets the data contained within all table rows starting
// from thefirst selected Table Row to the end of table.
// Each array element within the returned string array will
// contain a Pipe delimited data string of each retrieved row.
int selectedRow = theTable.getSelectedRow();
if (selectedRow < 0) { selectedRow = 0; }
int totalRows = theTable.getRowCount();
String[] resultArray = new String[((totalRows - selectedRow))];
DefaultTableModel dtm = (DefaultTableModel) theTable.getModel();
int nCol = dtm.getColumnCount();
int counter = 0;
String resultString;
for (int i = selectedRow; i < totalRows; i++) {
resultString = "";
for (int j = 0 ; j < nCol ; j++) {
resultString+= resultString.equals("") ? dtm.getValueAt(i,j).toString() :
"|" + dtm.getValueAt(i, j).toString();
}
resultArray[counter] = resultString;
counter++;
}
return resultArray;
}
Опять же, вы можете изменить этот метод, чтобы он возвращал все, что вам нравится. В качестве примера того, как вы можете использовать этот метод:
String[] desiredRows = getAllRowsFromSelected(jTable1);
for (String desiredRow : desiredRows) {
System.out.println(desiredRow);
}
Однако намного проще , чтобы ваш запрос получал точные требуемые записи.