Pourquoi mon JTable trier une colonne de type integer mal?
J'ai une JTable qui utilise un DefaultTableModel et j'permettre de tri lorsque l'utilisateur clique sur les en-têtes de colonne. Toutefois, lorsque l'utilisateur clique sur un en-tête d'une colonne qui contient des données de type entier, il ne permet pas de trier correctement. Il semble que c'est le tri par Chaîne au lieu d'un type entier.
Voici la partie de mon code où j'ai réellement ajouter les données à la table:
DefaultTableModel aModel = (DefaultTableModel) mainView.logEntryTable.getModel();
ResultSetMetaData rsmd; try {
mainView.logEntriesTableModel.setRowCount(0);
rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while(rs.next()){
Object[] objects = new Object[colNo];
for(int i=0;i<colNo;i++){
objects[i]=rs.getObject(i+1);
}
aModel.addRow(objects);
count++;
}
mainView.logEntryTable.setModel(aModel);
mainView.logEntryTable.getColumnModel().getColumn(0).setMaxWidth(80);
J'ai donc essayé de remplacer cette méthode et qui a abouti à ceci:
@Override
public Class<?> getColumnClass(int columnIndex){
if( columnIndex == 0){
//Return the column class for the integer column
}else{
//Return the column class like we normally would have if we didn't override this method
}
return null;
}
};
Je n'ai jamais remplacé ça avant, et je ne suis pas tout à fait sûr de ce qu'il attend de moi à faire ici.
- primordial getColumnClass est recommandé presque toujours: non seulement le tri des éléments de comparaison) fait comme prévu, mais en général, le formaté le rendu et la conversion de type lors de l'édition est traitée ainsi. BTW: ne jamais retourner la valeur null à partir de la getColumnClass ...
Vous devez vous connecter pour publier un commentaire.
Essayer ce petit exemple.
La meilleure façon
Comme suggéré par Kleopatra, la définition d'une colonne de catégorie pertinente pour les uns, ce sera suffisant pour obtenir les données à trier correctement.
D'origine, à l'aide d'un comparateur
Bien, les docs pour DefaultTableModel faire état:
Il semble donc qu'il va juste être la conversion des valeurs de chaînes, ce qui serait cohérent avec ce que vous avez vu.
Avez-vous essayé soit primordial
getColumnClass()
ou en appelantsetComparator()
pour leTableRowSorter
?Voici la réponse:
Problèmes avec JTable tri de valeurs entières
L'idée est de définir des classes pour les colonnes.