Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Rutkowski Achat - Vente Divers : woody 75 et 27 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

JButton dans une JTable

 
n°10090
javaMan
Profil : Jeune recrue
Posté le 03-09-2004 à 10:14:34  profilanswer
 

salut tout le monde
 
j'ai un petit problème en java/swing... je voudrais insérer des bouton dans une JTable...
 
j'ai réussi à en mettre en faisant:  
 

Code :
  1. TableColumnModel tcm = table.getColumnModel();
  2. TableColumn tc = tcm.getColumn(3);
  3. tc.setCellRenderer(new ButtonRenderer());
  4. tc.setCellEditor(new ButtonEditor());


 
mais tout les boutons sont pareils et tous cliquable alors que je voudrais que le bouton soit cliquable seulement selon certaine condition sur les autres cellules de la meme ligne. Le problème est que la fonction : isCellEditable est appelée avant que je puisse vérifier les champs des cellules...
 
je joint le code des classes ButtonEditor et ButtonRenderer
 
ButtonEditor :  
 

Code :
  1. /*
  2. * Created on 1 sept. 2004
  3. */
  4. package com.citenum.listing.table;
  5. /**
  6. * @author afaillon
  7. */
  8. import java.awt.Color;
  9. import java.awt.Component;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.util.EventObject;
  13. import javax.swing.JButton;
  14. import javax.swing.JTable;
  15. import javax.swing.event.CellEditorListener;
  16. import javax.swing.event.ChangeEvent;
  17. import javax.swing.event.EventListenerList;
  18. import javax.swing.table.TableCellEditor;
  19. import com.citenum.listing.Listing;
  20. import com.citenum.prosuivi.gestionPhotos.data.Photo;
  21. public class ButtonEditor extends JButton implements TableCellEditor {
  22. protected EventListenerList listenerList = new EventListenerList();
  23. protected ChangeEvent changeEvent = new ChangeEvent(this);
  24. private Photo photo;
  25. private int row;
  26. private int column;
  27. public ButtonEditor() {
  28.  super();
  29.  if(getText().equals("haute def." ))
  30.   setText("haute def." );
  31.  else
  32.   setText("basse def." );
  33.  addActionListener(new ActionListener() {
  34.   public void actionPerformed(ActionEvent e) {
  35.    String actionCommande = e.getActionCommand();
  36.    int row = Integer.parseInt(getName());
  37.    if(actionCommande.equals("haute def." )){
  38.     Listing.modele.getValueAt(row,1); //nom photo
  39.     // TODO haute def
  40.    }
  41.    if(actionCommande.equals("basse def." )){
  42.     // TODO basse def
  43.    }
  44.   }
  45.  });
  46. }
  47. public void addCellEditorListener(CellEditorListener listener) {
  48.  listenerList.add(CellEditorListener.class, listener);
  49. }
  50. public void removeCellEditorListener(CellEditorListener listener) {
  51.  listenerList.remove(CellEditorListener.class, listener);
  52. }
  53. public void cancelCellEditing() {
  54.  //fireEditingCanceled();
  55. }
  56. public boolean stopCellEditing() {
  57.  //fireEditingStopped();
  58.  return true;
  59. }
  60. public boolean isCellEditable(EventObject event) {
  61.  return true;
  62. }
  63. public boolean shouldSelectCell(EventObject event) {
  64.  return true;
  65. }
  66. //fonction appelée au clic
  67. public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  68.  PhotoRow photoRow = (PhotoRow) Listing.modele.getRowData(row);
  69.  photo = photoRow.getPhotographie();
  70.  if (photo.getFileID() == null || photo.getFileID().equals("" )){
  71.   setBackground(new Color(192,192,192));
  72.   setForeground(new Color(192,192,192));
  73.  } else {
  74.   setBackground(new Color(35,228,103));
  75.   setForeground(Color.black);
  76.  }
  77.  if(column == 3){
  78.   this.setText("haute def." );
  79.   this.setName(String.valueOf(row));
  80.   //this.addActionListener(actionListener);
  81.  } else if(column == 4){
  82.   this.setText("basse def." );
  83.   this.setName(String.valueOf(row));
  84.   //this.addActionListener(actionListener);  
  85.  }
  86.  return this;
  87. }
  88. public Object getCellEditorValue() {
  89.  return this;
  90. }
  91. }


 
 
ButtonRenderer :  
 

Code :
  1. /*
  2. * Created on 1 sept. 2004
  3. */
  4. package com.citenum.listing.table;
  5. /**
  6. * @author afaillon
  7. */
  8. import java.awt.Color;
  9. import java.awt.Component;
  10. import javax.swing.JButton;
  11. import javax.swing.JTable;
  12. import javax.swing.table.TableCellRenderer;
  13. import com.citenum.listing.Listing;
  14. import com.citenum.prosuivi.gestionPhotos.data.Photo;
  15. public class ButtonRenderer extends JButton implements TableCellRenderer {
  16. public ButtonRenderer() {
  17.  super();
  18.  if(getText().equals("haute def." ))
  19.   setText("haute def." );
  20.  else
  21.   setText("basse def." );
  22. }
  23. //fonction appelée à l'affichage
  24. public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  25.  PhotoRow photoRow = (PhotoRow) Listing.modele.getRowData(row);
  26.  Photo photo = photoRow.getPhotographie();
  27.  if (photo.getFileID() == null || photo.getFileID().equals("" )){
  28.   setEnabled(false);
  29.   setBackground(new Color(192,192,192));
  30.   setForeground(new Color(192,192,192/*236,38,28*/));
  31.  } else {
  32.   setBackground(new Color(35,228,103));
  33.   setForeground(Color.black);
  34.   setEnabled(true);
  35.  }
  36.  if(column == 3){
  37.   setText("haute def." );
  38.   setName(String.valueOf(row));
  39.   addActionListener(actionListener);
  40.  }
  41.  if(column == 4){
  42.   setText("basse def." );
  43.   setName(String.valueOf(row));        
  44.   addActionListener(actionListener);
  45.  }
  46.  return this;
  47. }
  48. }


 
 
j'espère que quelqu'un saura me répondre...
 
merci


Message édité par javaMan le 03-09-2004 à 10:23:31
n°10092
javaMan
Profil : Jeune recrue
Posté le 03-09-2004 à 10:52:07  profilanswer
 

j'ai édité pour déplacer le post dans JAVA mais il est dans les deux endroits maintenant... :(


Aller à :
Ajouter une réponse