Bonjour � tous
une question concernant les JTable
Voil� ce que je veux faire : changer la couleur d'une cellule de ma table
quand je clicke dessus.
Mais je veux en fait attribuer une valeur � un attribut particuler de cette
cellule dans le AbstractTableModel en cliquant dessus et donc comme le
modele change, la table est redessin�e et hop!!
Mais voil� ca d�conne compl�tement et toutes mes cellules changent de
couleur. Un peu de code :
A ma JTable j'ajoute un MouseListener pour detecter le click et changer la
valeur dans le modele

_jTable.addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
          if (e.getClickCount() == 1) {
                Point unPointOrigine = e.getPoint();
                int uneLigne = _jTable.rowAtPoint(unPointOrigine);
                int uneColonne = _jTable.columnAtPoint(unPointOrigine);
                if (uneLigne == -1 || uneColonne == -1)
                  return;
                else {
                  Object unObject = _jTable.getValueAt(uneLigne,uneColonne);
                  //Si la cellule est de Type T1 elle doit �tre bleue.
                  _JTableModel.modifierType(Type.T1,unObject);
                }
          }
        }
  });

Maintenant ma classe redefinissant DefaultTableCellRenderer prend en compte
le type de chaque cellule :
 public Component getTableCellRendererComponent(JTable pJTable,Object
pValueObject,boolean pIsSelected,boolean pHasFocus,int pLigne,int pColonne)
{
        JLabel unRequestedComponent;
        SpeModel unJTableModel = null;
        Type unType = null;
        if (pValueObject==null || pValueObject.equals(null) ||
pValueObject.equals("")) {
          unRequestedComponent = new JLabel();
          unRequestedComponent.setEnabled(false);
        }
        else {
          unJTableModel = (SpeModel) pJTable.getModel();
          unType = unJTableModel.getType(pValueObject);
          unRequestedComponent = (JLabel)
super.getTableCellRendererComponent(pJTable, pValueObject, pIsSelected,
pHasFocus, pLigne, pColonne);
          unRequestedComponent.setHorizontalAlignment(JLabel.CENTER);
          if (unType==Type.T1) {
                unRequestedComponent.setBackground(Color.blue);
          }
        }
        return unRequestedComponent;
  }

voil� en gros (et �pur�e) les deux bouts de code principaux...
Donc vu que je ne suis pas un expert Swing, d'apr�s vous o� est l'erreur?

Merci de votre aide.

 
______________________________________________________________________________
ifrance.com, l'email gratuit le plus complet de l'Internet !
vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP...
http://www.ifrance.com/_reloc/email.emailif


Répondre à