J'essaye de rendre une ligne spécifique de mon jtable (elle devrait avoir une couleur de fond différente et devrait avoir des caractères gras).Personnalisé TableCellRenderer ne fonctionne pas (rendu de ligne de table)
J'ai trouvé plusieurs questions sur la façon de mettre en œuvre une coutume TableCellRenderer
(here et here) et le tutoriel How to Use Tables et celui-ci (Table Row Rendering). J'utilise un JInternalFrame
pour afficher le code JTable
. J'ai essayé d'implémenter les deux solutions mais ni getCellRenderer
ni prepareRenderer
ne sont appelés. Lors du débogage, je peux voir que mon nouveau jtable est créé, mais mon point d'arrêt à l'intérieur des méthodes n'est pas appelé.
Mon code ressemble:
this.add(createData(model));
private JComponent createData(ProfitLossTableModel model) {
JTable table = new JTable(model) {
public TableCellRenderer getCellRenderer(int row, int column) {
if ((row == 0) && (column == 0)) {
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(JLabel.RIGHT);
renderer.setBackground(Color.red);
return renderer;
} else {
return super.getCellRenderer(row, column);
}
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.changeSelection(0, 0, false, false);
table.setAutoCreateRowSorter(true);
return new JScrollPane(table);
}
Comme vous pouvez le voir, le modèle est ma mise en œuvre d'un AbstractTableModel
.
Bien sûr, il me manque quelque chose. J'ai essayé d'appeler repaint()
pour voir si quelque chose est arrivé, mais rien ne s'est produit.
J'ai également essayé de mettre un JPane dans mon JInternalFrame et d'y ajouter le JScrollPane, mais rien ne s'est produit aussi.
Une aide?
TIA,
Bob
Le code que vous avez posté semble correct. Cependant, nous ne connaissons pas le contexte dans lequel vous utilisez réellement ce code. Donc, votre premier travail consiste à créer un SSCCE (http://sscce.org) en utilisant le DefaultTableModel et voir si vous pouvez obtenir le code de travail. Si ce n'est pas le cas, vous postez tout le programme SSCCE à 15 lignes afin que nous puissions voir exactement ce que vous faites. Une fois que cela fonctionne, vous essayez d'utiliser votre TableModel personnalisé. – camickr