Bonjour à tous,

J'ai un petit problème avec un TableCellRenderer.

J'essaye d'afficher des données dans une table, mais j'aimerais pouvoir en meme temps changer l'affichage de ces données (dans le code ci-dessous j'affiche juste une ligne sur deux de couleur différente).

Mais en gros je n'arrive qu'a obtenir soit l'affichage des données, soit l'affichage des couleurs.

Classe qui update ma 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
 
         /**
         * Update la JTable apres chaque evenement
         *
         */
	public void updateJTableCalendar() {
 
		// On definie le model
		EventModel model = new EventModel();
		TableCellRenderer modelRenderer = new EventModelRenderer();
 
		// On instancie la variable JTableCalendar et la ScrollPane
		JTableCalendar = new JTable(model);
		model.fireTableDataChanged();
 
		// on applique le model renderer
                JTableCalendar.setDefaultRenderer(JLabel.class,modelRenderer);
 
		pane = new JScrollPane(JTableCalendar);
		pane.setBounds(7, 5, 784, 718);
 
		// On ajoute la table au panel
		JPanelCalendar.add(pane);
 
		JTableCalendar.repaint();
		pane.repaint();
		JPanelCalendar.repaint();
 
 
 
	}
voici EventModel qui affiche les donnée :

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
public class EventModel extends AbstractTableModel {
 
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
 
	/**
         * 
         */
	public Class<?> getColumnClass(int arg0) {
		// TODO Auto-generated method stub
		return JLabel.class;
	}
 
	/**
         * Renvoi le nombre de colonne
         */
	public int getColumnCount() {
 
		return 8;
	}
 
	/**
         * Renvoi le nom des colonnes
         */
	public String getColumnName(int colonne) {
 
		String jour = null;
                ..........	
		return jour;
	}
 
	/**
         * Renvoi le nombre de ligne
         */
	public int getRowCount() {
 
		// On fixe le nombre de ligne a 48 (2*24h)
		return 48;
	}
 
	/**
         * Renvoi la valeur d'une case en x, y
         */
	public String getValueAt(int ligne, int colonne) {
 
		JLabel donnee = new JLabel();
 
		switch(colonne) {
 
			// Cas des heures
			case 0:
				if( (ligne % 2) == 0 ) {
					if(ligne != 0) ligne = ligne - ligne/2;
					if(ligne < 10) donnee.setText("0" + ligne + ":00");
					else donnee.setText(ligne + ":00");
				}
				else donnee.setText("");
 
			break;
		}
 
		return donnee.getText();
	}
 
}
et Voilà la classe EventModelRenderer qui est censé affiche les ligne d'une couleur différente

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
 
public class EventModelRenderer extends DefaultTableCellRenderer {
 
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
 
	private Color lightBlue = new Color(241, 245, 250);
	private Color blue = new Color(61, 128, 223);
 
	/**
         * Constructeur
         *
         */
	public EventModelRenderer() {
		super();
	}
 
	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 (value instanceof JLabel) {
 
			if((row % 2) == 0) {
				cell.setBackground(lightBlue);
			}
			else cell.setBackground(Color.WHITE);
 
			if(isSelected) cell.setBackground(blue);
 
		}
 
		return cell;
	}
 
}
Voilà si quelqu'un aurait une solution ça serait vraiment cool.

Désolé si mon problème a déjà été posté ailleurs, mais je n'ai rien trouvé en faisant mes recherches.

Merci encore.