Voici mon code :
Le modèle de table :
Le TableCellRenderer :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 import javax.swing.table.*; public class PlanningModel extends AbstractTableModel { String[] columnNames = {"Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"}; Object[][] data = null; public PlanningModel(int l, int c) { super(); data = new Object[l][c]; } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int l, int c) { return data[l][c]; } public void setValueAt(Object val, int l, int c) { data[l][c] = val; } public int getRowCount() { return data.length; } public String getColumnName(int c) { return columnNames[c]; } public Class getColumnClass(int c) { try { return getValueAt(0, c).getClass(); } catch (Exception ex) { return "".getClass(); } } public boolean isCellEditable(int r, int c) { return false; } }
Une partie du code pour afficher la jtable :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import java.awt.Color; import java.awt.Component; import java.util.Date; import javax.swing.BoxLayout; import javax.swing.JTextArea; public class PlanningColorRenderer extends JTextArea implements TableCellRenderer { protected Date now; protected int day; public PlanningColorRenderer(Date now, int nbRow, int nbCol) { super(nbRow, nbCol); this.now = now; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); setOpaque(true); } public Component getTableCellRendererComponent( JTable table, Object value, boolean selected, boolean focused, int row, int column) { if (row % 2 == 0) { setBackground(new Color(184, 184, 184)); table.setRowHeight(row, 13); setText(row +" "+column); } else { setBackground(Color.white); table.setRowHeight(row, 74); setText(row +"\n"+column); } return this; } private void setData(String text, int align){ JLabel label = new JLabel(); label.setText(text); label.setHorizontalAlignment(label.LEFT); add(label); } }
La question ou plutot le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 JTable jTable1 = new JTable(planningModel); PlanningColorRenderer planningColorRenderer = new PlanningColorRenderer(currentDate,10,7); jTable1.setDefaultRenderer(String.class, planningColorRenderer); jTable1.setRowSelectionAllowed(false); jPanel2.add(jScrollPane1, java.awt.BorderLayout.CENTER); jScrollPane1.getViewport().add(jTable1);
Tout marche bien en apparence, sauf que j'ai une boucle infinie dans la méthode getTableCellRendererComponent de la classe PlanningColorRenderer.
Est ce que quelqu'un à une idée ? Est ce mon modèle qui pose problème ?
Merci de votre aide
Partager