Voici mon code :

Le modèle de table :

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;
  }
 
}
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
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);
    }
}
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
 
    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);
La question ou plutot le problème :
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