problème avec mon renderer

problème avec mon renderer - Java - Programmation

Marsh Posté le 05-11-2010 à 00:35:15    

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 :
  1. package Interface;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.util.Iterator;
  5. import java.util.TreeSet;
  6. import javax.swing.JComponent;
  7. import javax.swing.JLabel;
  8. import javax.swing.JTable;
  9. import javax.swing.table.TableCellRenderer;
  10. public class CelluleReservationRenderer extends JLabel implements TableCellRenderer
  11. {
  12. Reservation res;
  13. public CelluleReservationRenderer()
  14. {
  15.  super();
  16.  setOpaque(true);
  17.  setHorizontalAlignment(JLabel.CENTER);
  18. }
  19. public Component getTableCellRendererComponent(JTable parTable, Object parValeur, boolean estSelectionne, boolean aLeFocus, int Ligne, int Colonne)
  20. {
  21.  if(parValeur==null)
  22.  {
  23.   this.setBackground(Color.blue);
  24.   // on remplit les cases vides et leur tooltiptext avec des espaces pour que de fausses informations  
  25.   //ne puissent pas être inserees
  26.    this.setText(" " );
  27.    this.setToolTipText(null);
  28.  }
  29.  else
  30.  {
  31.   res= (Reservation) parValeur;
  32.   this.setText(Constantes.nomChirurgiens[res.getIndexNomChirurgiens()]);
  33.   this.setForeground(Color.red);
  34.   this.setToolTipText(res.toString());
  35.  }
  36.  return this;
  37. }
  38. }


 
je vous remercie d'avance pour votre aide.

Reply

Marsh Posté le 05-11-2010 à 00:35:15   

Reply

Marsh Posté le 20-12-2010 à 12:23:52    

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 :
  1. try {
  2.    res= (Reservation) parValeur;
  3. } catch(ClassCastException e) {
  4.    System.out.println("Attention: type incorrect pour parValeur" );
  5.    ...
  6. }


 
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 :
  1. package Interface;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.util.Iterator;
  5. import java.util.TreeSet;
  6. import javax.swing.JComponent;
  7. import javax.swing.JLabel;
  8. import javax.swing.JTable;
  9. import javax.swing.table.TableCellRenderer;
  10. public class CelluleReservationRenderer extends JLabel implements TableCellRenderer
  11. {
  12. Reservation res;
  13. public CelluleReservationRenderer()
  14. {
  15.  super();
  16.  setOpaque(true);
  17.  setHorizontalAlignment(JLabel.CENTER);
  18. }
  19. public Component getTableCellRendererComponent(JTable parTable, Object parValeur, boolean estSelectionne, boolean aLeFocus, int Ligne, int Colonne)
  20. {
  21.  if(parValeur==null)
  22.  {
  23.   this.setBackground(Color.blue);
  24.   // on remplit les cases vides et leur tooltiptext avec des espaces pour que de fausses informations  
  25.   //ne puissent pas être inserees
  26.    this.setText(" " );
  27.    this.setToolTipText(null);
  28.  }
  29.  else
  30.  {
  31.   res= (Reservation) parValeur;
  32.   this.setText(Constantes.nomChirurgiens[res.getIndexNomChirurgiens()]);
  33.   this.setForeground(Color.red);
  34.   this.setToolTipText(res.toString());
  35.  }
  36.  return this;
  37. }
  38. }


 
je vous remercie d'avance pour votre aide.


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed