Salut à tous,
Voilà mon problème, j'essaie de faire en sorte qu'à chaque fois que l'utilisateur clique sur un JLabel, la deuxième colonne de la ième ligne de JTable se met à jour en modifiant sa couleur de fond avec la couleur de fond du JLabel.
Pour cela, j'ai crée mon propre Renderer que j'ai affecté à la colonne en question.
Le problème est que je ne sais pas comment "déclencher" le renderer dans le listener du JLabel.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import java.awt.Component; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; public class JTableRenderer extends DefaultTableCellRenderer { /** * */ private static final long serialVersionUID = -717160837108350092L; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); JLabel label = (JLabel) component; component.setBackground(label.getBackground()); return component; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TableColumn col = table.getColumnModel().getColumn(1); col.setCellRenderer(new JTableRenderer());
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private MouseListener setColorAction = new MouseAdapter() { @Override public void mouseClicked(MouseEvent evt) { JLabel label = (JLabel) evt.getSource(); //je souhaiterais déclencher le renderer ici afin de modifier la cellule de la JTable } };
Partager