Salut,
Très bon article sur les JTables ! Cela manquait
J'ai deux petites remarques (mais c'est vraiment des bricoles --- j'aime bien chipoté ) :
Tu peux éviter de supprimer le texte des cellule avec setText("") tout simplement en évitant de passer "value" à la méthode parente, par exemple :
1 2 3 4 5 6 7 8
| class ColorCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, null, isSelected, hasFocus, row, column);
setBackground( (Color)value );
return this;
}
} |
Dans ton SexeCellRenderer tu précharges une fois pour toute les images pour éviter de les recréer à chaque appel. C'est bien mais on pourrait faire la même chose dans le BoldCellRenderer pour éviter de multiplier les créations de Font dérivée :
1 2 3 4 5 6 7 8 9 10 11 12
| public class BoldCellRenderer extends DefaultTableCellRenderer {
private final Font boldFont = getFont().deriveFont(Font.BOLD);
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setFont(this.boldFont);
return this;
}
} |
Enfin je finirais avec une petite astuce : il est possible d'alterner les couleurs de fond des cellules assez facilement. Par example pour alterner avec un jaune pale :
UIManager.put("Table.alternateRowColor", new Color(255, 255, 204));
Cela fonctionne tant qu'on ne modifie pas explicitement la couleur de fond et qu'on hérite bien de DefaultCellRenderer pour tous nos renderer (ce que je conseillerais d'ailleurs pour la plupart des renderers).
Toutefois, il faut penser que cela impactera toutes les JTables de l'application...
a++
Partager