Coloriage jTable ligne
Je veux de la couleur des lignes spécifiques dans jTable..je l'ai fait pour les colonnes à l'aide de ce code,
private class CustomCellRenderer extends DefaultTableCellRenderer {
/* (non-Javadoc)
* @see
javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
@Override
public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) {
Component rendererComp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,row, column);
//Set foreground color
//rendererComp.setForeground(Color.red);
//Set background color
rendererComp .setBackground(Color.pink);
return rendererComp ;
}
}
Et j'appelle le code ci-dessus à l'aide,
jTable1.getColumnModel().getColumn(3).setCellRenderer(new CustomCellRenderer());
Mais je veux faire la même chose pour les lignes dans jTable..Il n'y a pas getColumnModel() ou getColumn() dans le cas de lignes..Alors, quelle est l'autre façon de faire cela? Je le fais dans Netbeans en utilisant Java Swing..
OriginalL'auteur Luna | 2012-06-21
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de comment vous pouvez combiner les deux colonnes de couleurs et la couleur de ligne. En gros, vous effectuer des tests dans les TableCellRenderer pour voir si le fond doit être d'une couleur ou d'une autre.
Je ne suis pas sûr de comprendre votre commentaire. Dans la méthode
getTableCellRendereComponent
, vous avez accès à toutes les informations dont vous pourriez avoir besoin: la JTable, la valeur actuelle de la cellule, et la position de la cellule dans le tableau (ligne et colonne), ainsi que la ligne actuelle est sélectionné et si la cellule active est concentrée. De la table, vous obtenez également l'accès à votre TableModel (tableau.getModel()). Je pense que cela devrait être assez facile à partir de là, pour calculer ce que vous voulez et définissez la couleur d'arrière-plan.Ce que je sais..Mais ma question est comment puis-je invoquer la méthode getTableCellRendereComponent() en spécifiant mon i-ième ligne et la 1ère colonne..j'ai essayé de cette façon aussi..finale CustomCellRenderer renderer = new CustomCellRenderer(); , moteur de rendu.getTableCellRendererComponent(jTable1, 1, true,true, i, 1);
Vous n'appelez pas la TableCellRenderer vous-même, vous laissez la JTable le faire pour vous. Il va vous appeler pour tous vos lignes automatiquement la première fois, il doit être rendu, et puis par la cuisson approprié TableModel événements, il finira par reinvoke votre TableCellRenderer. Si vous avez toujours des problèmes avec cela, il est conseillé de lire ce tutoriel ou poster une autre question.
Ligne de coloriage fonctionne selon votre exemple,mais le problème est là..Pouvez-vous m'aider
OriginalL'auteur Guillaume Polet
Que vous souhaitez modifier des lignes entières, indépendamment de la colonne de la classe, considèrent primordial
prepareRenderer()
, tel que discuté ici. LeTableCellRenderer
etprepareRenderer()
approches sont contrastés ici.OriginalL'auteur trashgod
Cela semble être une très sale manière de les gérer. Ça va être une bien meilleure idée si vous utilisez un gridLayout à l'aide de la layoutManager pour vous containter (je pense que cela doit être une JFrame). U peut ajouter une personne componets (JPanels, Jbuttons, ou de toute autre JComponent) et de gérer leur look en utilisant la peinture (le)/repaint() méthodes.
MODIFIER
OU vous pouvez changer le getTableCellRendererComponent(....) méthode pour définir vos couleurs d'arrière-plan personnalisée utilisant des if-else ou en cas de commutateur selon l'int lignes ,int colonnes (qui sont fournis en tant qu'arguments).
Ce sera beaucoup plus facile
à l'aide de JTable est bien, mais u doit implémenter l'Interface TableCellRenderer plutôt que d'hériter de l'ensemble de la classe
Quel serait le point de tout cela? À l'aide de la DefaultTableCellRenderer vous aussi automatiquement obtenir de L&F dépendant de couleurs en arrière-plan (couleur de sélection est différente entre les différents L&F/plates-formes). À moins que le rendu n'est pas réellement un JLabel, mais quelque chose de plus complexe, je ne vois pas pourquoi ne pas réutiliser ce qui existe déjà.
Merci Guillaume polet..
oui, c'est vrai. Je reçois votre point de
OriginalL'auteur vedant