rendu de cellule personnalisé pour particulier de ligne et de colonne
puuuuuuf, je commence à aimer swing 🙂 je suis en train d'écrire un cellRenderer pour customy rendre toutes les cellules en dehors de ceux, qui dans la première ligne et de colonne. J'ai donc écrit ce qui suit:
public class CustomTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
if(row >0&&column>0){
cell.setBackground(Color.GREEN);
}
return cell;
}
}
et définir le moteur de rendu comme suit:
scheduleTable.setDefaultRenderer(Object.class, new CustomTableCellRenderer());
mais pour certaines raisons, une telle approche s'applique rendu à l'ensemble de la cellule. Donc, ils sont tous au Vert. Si je fais quelque chose de mal, pourriez-vous m'aider s'il vous plaît?
Merci d'avance!
PLUS
scheduleTable = new JTable() {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
int modelRow = convertRowIndexToModel(row);
int modelColumn = convertColumnIndexToModel(column);
if (modelColumn != 0 && modelRow != 0) {
comp.setBackground(Color.GREEN);
}
return comp;
}
};
ce code fait toute la table verte.
Ce code:
scheduleTable = new JTable(tableModel) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
int modelRow = convertRowIndexToModel(row);
int modelColumn = convertColumnIndexToModel(column);
if (modelRow != 0 && modelColumn != 0) {
setBackground(Color.GREEN);
} else {
setBackground(Color.WHITE);
}
return comp;
}
};
me donne le résultat suivant ;(
Les situations suivantes, j'ai lu avec différents n
dans l'expression row != 0 && column != 0
:
OriginalL'auteur mr.nothing | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser prepareRenderer, est plus facile et plus confortable que
XxxCellRenderer
grand exemple de code est Ligne De Tableau De Rendu par @camickr
EDIT:
et avec
if (modelColumn != 0 && modelRow != 0) {
de code
veuillez voir mon edit
mr.rien de ce que je poste un mauvais code, j'ai oublié de else, dernière mise à jour est correcte et si (modelColumn != 0 && modelRow != 0) { travaille trop
il semble que j'ai des problèmes avec... je peut même pas deviner avec quoi 😀 Voir mon edit, s'il vous plaît.
et ce qui se passe quand vous remplacez
if (modelColumn != 0 || modelRow != 0) {
avecif (column != 0 || row != 0) {
, que le sens d'ignorer la valeur deModel
et seulement directement la peinture par la valeur deJTable's view
OriginalL'auteur mKorbel
Utiliser la ligne et la colonne valeur, sans les convertir en modèle
OriginalL'auteur Deb