[swing] renderer: changer le format selon la valeur

renderer: changer le format selon la valeur [swing] - Java - Programmation

Marsh Posté le 24-06-2004 à 17:38:16    

bonjour j'aimerai changer le format de cellules dans un tablo selon la valeur q'elles ont. J'ai actuellement un Renderer qui herite du DefaultTableCellRenderer et je px changer le format d'une cellule en fonction de sa ligne et de sa colonne. j'aurais voulu savoir si c'était possible de changer selon la valeur qu'elles ont. il y a un champ value dc j'ai fait un  
if (value.equals("toto" )) cell.setBackground(Color.gray) ;
 
et la, il y a des erreurs a l'affichage.
pouvez vous m'aider ?
merci d'avance

Reply

Marsh Posté le 24-06-2004 à 17:38:16   

Reply

Marsh Posté le 25-06-2004 à 12:41:24    

c'est quoi les erreurs?
post un bout de code aussi ;)

Reply

Marsh Posté le 25-06-2004 à 19:07:26    

l'erreur c'est donc :  
java.lang.NullPointerException
 at RendererJT_PhasesFinales.getTableCellRendererComponent(RendererJT_PhasesFinales.java:34)
 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.paintChildren(Unknown Source)
 at javax.swing.JComponent.paint(Unknown Source)
 at javax.swing.JLayeredPane.paint(Unknown Source)
 at javax.swing.JComponent.paintChildren(Unknown Source)
 at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
 at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
 at javax.swing.JComponent.paint(Unknown Source)
 at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
 at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
 at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
 at java.awt.Container.paint(Unknown Source)
 at sun.awt.RepaintArea.paint(Unknown Source)
 at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
 at java.awt.Component.dispatchEventImpl(Unknown Source)
 at java.awt.Container.dispatchEventImpl(Unknown Source)
 at java.awt.Window.dispatchEventImpl(Unknown Source)
 at java.awt.Component.dispatchEvent(Unknown Source)
 at java.awt.EventQueue.dispatchEvent(Unknown Source)
 at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)
 
 
 
le code c'est :
 
 
 
import javax.swing.table.*;  
import java.awt.*;
import javax.swing.* ;
import javax.swing.border.*;
/*
 * Créé le 24 juin 2004
 *
 */
 
/**
 * @author guillaume
 *
 */
public class RendererJT_PhasesFinales extends DefaultTableCellRenderer {
 
 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);
  Border raisedbevel  = BorderFactory.createRaisedBevelBorder();
 
  if ( ((column==0)&&(row%2==0))  ) {
   cell.setBackground(Color.red);
   cell.setForeground(Color.white);
   
   //setBorder(raisedbevel) ;
  // setBorder(BorderFactory.createLoweredBevelBorder()) ;
  }
  else if ((column>0)&&(row>0)&&( (Math.power(2,column)-1) ==  row % (Math.power(2,column+1)) ) ) {
   cell.setBackground(Color.red);
   cell.setForeground(Color.white);
   
  }
  else if (table.getModel().getValueAt(row,column).equals("Match" )) {
   cell.setBackground(Color.green) ;
   
  }
  else {
     cell.setBackground(Color.black);
     cell.setForeground(Color.black);
   }
   
 
   
  setHorizontalAlignment( CENTER );
  return cell ;
  }
 
}
 
 
 
 

Reply

Marsh Posté le 25-06-2004 à 19:08:09    

l'erreur vient du else if (table.getModel().getValueAt(row,column).equals("Match" ))

Reply

Marsh Posté le 25-06-2004 à 20:39:42    

ben java.lang.NullPointerException  c'est qd t'utilise une variable null donc il te reste plus qu' a debuggé.
 
c'et surement le : table.getModel().getValueAt(row,column) << qui renvois null
 
donc verification avant le equals()

Reply

Marsh Posté le 25-06-2004 à 21:21:31    

"toto".equals(value)
 
est bien plus sur

Reply

Marsh Posté le 26-06-2004 à 04:18:35    

merci taz, maintenant ca fonctionne impeccable
c qd meme bizarre ca... est ce le pb du castage qui se passe pas bien dans  l'autre sens ?

Reply

Marsh Posté le 26-06-2004 à 09:16:35    

non, c'est que si value est null,  equals retourne false, donc on est protégé. en règle générale, écrit toujours "chaine littérale".méthode(autre_chaine)

Reply

Marsh Posté le 26-06-2004 à 09:58:46    

oki maintenant je ferais attention...

Reply

Marsh Posté le 26-06-2004 à 10:28:56    

sinon est ce que vous savez comment on fait pour qu'il n'y ait plus les traits en gris autour des cellules... j'ai essayé de changer les border mais les borders se creent à l'nteirieur des cellules delimitees par les traits en gris dc on les voit encore...
merci d'avance...

Reply

Sujets relatifs:

Leave a Replay

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