2009-03-16 4 views
3

Если столбцы моего JTable не сглажены, я могу использовать getSelectedRows() и без каких-либо проблем получать значения своих строк. Но, если пользователь нажимает на имя столбца и строки в алфавитном порядке в этом столбце, getSelectedRows() возвращает не выбранные в настоящий момент строки, а строки, которые изначально были там до алфавита.Получение реальных индексов строк для выбранных строк в JTable, если столбцы указаны в алфавитном порядке

Как получить выбранные строки, когда столбцы указаны в алфавитном порядке?

ответ

1

Возможно, немного поздно, но я подумал, что все равно отправлю.

Посмотрите на метод JTable convertRowIndexToModel (строка). Он возвращает номер строки, как если бы номер строки не был отсортирован.

3

Используйте этот код, вы получите правильные строки, которые вы визуально выбрали.

int[] row_indexes=jTable1.getSelectedRows(); 
for(int i=0;i<row_indexes.length;i++){ 
    domain=jTable1.getValueAt(row_indexes[i], 1).toString(); 
    System.out.println(this, domain); 
} 
2
private void selectRow() { 

//retrieving the selected row index 

int row = jTable1.getSelectedRow(); 

//if a single row is selected from the table, take each cell values into the controls 

if (jTable1.getRowSelectionAllowed()) 
{ 

    selectedJobId = Integer.parseInt(jTable1.getValueAt(row, 0).toString()); 

    jTextField_JobName.setText(jTable1.getValueAt(row, 1).toString()); 

    jTextField_ExpDate.setText(jTable1.getValueAt(row, 3).toString()); 

    jComboBox_JobCat.setSelectedItem(jTable1.getValueAt(row, 4).toString()); 

    jComboBox_JobSubCat.setSelectedItem(jTable1.getValueAt(row, 5).toString()); 

} 

}