2009-03-16 7 views
3

Si les colonnes de ma JTable sont non-alphabétisées, je peux utiliser getSelectedRows() et obtenir les valeurs de leurs lignes sans problème. Mais, si l'utilisateur clique sur le nom de la colonne et que les lignes sont alphabétisées dans cette colonne, getSelectedRows() ne renvoie pas les lignes actuellement sélectionnées, mais les lignes qui étaient à l'origine là avant l'alphabétisation.Récupération des véritables index de lignes de lignes sélectionnées dans JTable lorsque les colonnes sont classées par ordre alphabétique

Comment puis-je obtenir les lignes actuellement sélectionnées lorsque les colonnes sont alphabétisées?

Répondre

1

Probablement un peu en retard, mais je pensais que je posterais de toute façon.

Jetez un oeil à la méthode JTable convertRowIndexToModel (ligne). Il renvoie le numéro de ligne comme si le numéro de ligne n'avait pas été trié.

3

Utilisez ce code pour obtenir les lignes correctes que vous avez sélectionnées visuellement.

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()); 

} 

} 
Questions connexes