Bonjour,
j'aimerais simplement entourer la bordure d'une cellule d'une JTable en rouge après l'action d'un bouton.
Pour la création de la Jtable, j'ai le bout de code suivant :
Et pour la gestion de l'affichage des cellules de la Jtable, j'ai le bout de code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 this.table_phases = new JTable(); this.table_phases.setDefaultRenderer(Object.class, new CheckDataCellRenderer()); this.table_phases.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.table_phases.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { // d'autres action... } } } }
Pour le moment, lorsqu'une cellule est vide elle est entourée en rouge.
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 public class CheckDataCellRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (cell instanceof JLabel) { JLabel label = (JLabel) cell; if (label.getText().isEmpty()) { label.setBorder(BorderFactory.createLineBorder(Color.red)); } else { label.setBorder(Constants.DEFAULT_BORDER); } } return cell; } }
J'aimerais juste appliquer cette action lors d'un click sur un bouton par exemple.
J'avais pensé à initialiser lors de mon click une map pour les cellules à contrôler et à inclure cette map dans le renderer CheckDataCellRenderer.
Pensez-vous que cette solution est propre ou avez-vous une solution plus propre ?
Partager