Ju - | Vieux motard que jamais, dit-on?
Bonjour, je viens de lire ton message et me permets donc répondre car la solution me parait assez simple, et je ne vois aucune réponse à ta question...
Le problème vient du type de la variable parValeur que reçoit ta méthode getTableCellRendererComponent, qui doit être un string au runtime, et que tu essaies de caster en type Reservation ligne 36...
Vérifie donc l'appel de cette méthode, et afin de blinder ton code, il faudrait rajouter ici:
Code :
- try {
- res= (Reservation) parValeur;
- } catch(ClassCastException e) {
- System.out.println("Attention: type incorrect pour parValeur" );
- ...
- }
|
Bon courage.
miss_dreams a écrit :
Bonjour tout le monde
Voila mon soucis ... Je dois développer une interface d'affichage d'un tableau et j'aimerais faire un renderer qui change la couleur de mes cases selon ce qu'il y a dedans mais voila l'erreur qui se répète tout le temps et je ne comprend pas:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to Interface.Reservation
at Interface.CelluleReservationRenderer.getTableCellRendererComponent(CelluleReservationRenderer.java:36)
at javax.swing.JTable.prepareRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
voila mon code:
Code :
- package Interface;
- import java.awt.Color;
- import java.awt.Component;
- import java.util.Iterator;
- import java.util.TreeSet;
- import javax.swing.JComponent;
- import javax.swing.JLabel;
- import javax.swing.JTable;
- import javax.swing.table.TableCellRenderer;
- public class CelluleReservationRenderer extends JLabel implements TableCellRenderer
- {
- Reservation res;
- public CelluleReservationRenderer()
- {
- super();
- setOpaque(true);
- setHorizontalAlignment(JLabel.CENTER);
- }
- public Component getTableCellRendererComponent(JTable parTable, Object parValeur, boolean estSelectionne, boolean aLeFocus, int Ligne, int Colonne)
- {
- if(parValeur==null)
- {
- this.setBackground(Color.blue);
- // on remplit les cases vides et leur tooltiptext avec des espaces pour que de fausses informations
- //ne puissent pas être inserees
- this.setText(" " );
- this.setToolTipText(null);
- }
- else
- {
- res= (Reservation) parValeur;
- this.setText(Constantes.nomChirurgiens[res.getIndexNomChirurgiens()]);
- this.setForeground(Color.red);
- this.setToolTipText(res.toString());
- }
- return this;
- }
- }
|
je vous remercie d'avance pour votre aide.
|
|