Ho creato questa classe CustomCellRenderer
da utilizzare negli oggetti JXTreeTable
e JXTable
poiché ne ho molti di questi nel mio progetto. Quindi questa classe implementa TreeCellRenderer
e TableCellRenderer
interfacce:Custom TableCellRenderer/TreeTableCellRenderer non esegue il rendering delle celle della tabella
public class CustomCellRenderer extends JLabel
implements TreeCellRenderer, TableCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
setBackground(selected ? new Color(83,142,213) : Color.white);
setForeground(selected ? Color.white : Color.black);
//here is the icon setting code but it's irrelevant to my problem
setText(value != null ? value.toString() : "<null>");
return this;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBackground(isSelected ? new Color(83,142,213) : Color.white);
setForeground(isSelected ? Color.white : Color.black);
setText(value != null ? value.toString() : "<null>");
return this;
}
}
Ed ecco il codice in cui ho impostato il programma di rendering:
jXTreeTableConsumos.setDefaultRenderer(Object.class, new CustomCellRenderer());
jXTreeTableConsumos.setTreeCellRenderer(new CustomCellRenderer());
Mi aspetto sfondo e primo piano diventano blu e bianco, rispettivamente, quando una riga è selezionato. Tuttavia succede solo in cella di una tabella Albero (prima colonna), mentre solo le modifiche primo piano e sfondo alambicchi bianco nelle altre celle della stessa riga selezionata:
Qualcuno potrebbe per favore mi dica il motivo per cui le cellule (che sono non le celle degli alberi) non cambiano il loro colore di sfondo?
senza entendi La pregunta – nachokk
I don capisco, neanche; perché 'Object.class'? _che cosa non cambia in blu? Modifica la tua domanda per includere un [sscce] (http://sscce.org/) che mostra il problema che descrivi. – trashgod