renderer: changer le format selon la valeur [swing] - Java - Programmation
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 ;
}
}
Marsh Posté le 25-06-2004 à 19:08:09
l'erreur vient du else if (table.getModel().getValueAt(row,column).equals("Match" ))
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()
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 ?
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)
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...
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