IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable]Probleme avec TableCellEditor


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut [JTable]Probleme avec TableCellEditor
    Bonjour,
    j'ai un probleme avec un TableCellEditor pour ma JTable. j'ai créé une JTable avec dans une colonne un JButton. Pour mettre ce JButton, j'utilise un TableCellEditor. Le probleme est que je définis un TableCellEditor pour toute ma colonne, donc lorsque je clique sur le JButton de la première ou de la 5eme ligne par exemple, le meme evenement est lancé.
    Je souhaite définir un TableCellEditor par cellule pour avoir un evenement par cellule mais je ne sais pas comment faire

    Creation de la JTable (ce qui m'interesse est la colonne 3 ou 4)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    			entete = new String[5];
    			entete[0] = "Nom du matériel";
    			entete[1] = "Quantité";
    			entete[2] = "Unité";
    			entete[3] = "Voir détail";
    			entete[4] = "Supprimer";
     
    			tableMat = new ModeleMateriel(entete);
    			jTable = new JTable();
    			jTable.setModel(tableMat);			
     
    			contenu = new ArrayList<Object[]>();
     
    			tableMat.setData(contenu);			
     
    			TableColumn cC1 = jTable.getColumnModel().getColumn(1);
     
    			cC1.setCellEditor(new QuantityEditor());				
     
    			TableColumn cC3 = jTable.getColumnModel().getColumn(3);
     
    			cC3.setCellEditor(new BoutonDetailEditor());	
     
    			TableColumn cC4 = jTable.getColumnModel().getColumn(4);
     
    			cC4.setCellEditor(new BoutonSupprEditor());
    Le code de mon TableCellEditor nommé BoutonDetailEditor()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    	  private JButton detail;
     
    	  public BoutonDetailEditor () {
    	    detail = new JButton();
    	    detail.setText("Voir détail");
    	    detail.addActionListener(new ActionListener(){
    	      public void actionPerformed(ActionEvent event) {
    	        System.out.println("yes");
    	      }
    	    });
    	  }
     
    	  public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    	    return detail;
    	  }	 
     
    	  public Object getCellEditorValue() {
    	    return null ;
    	  }
     
    	  public void setEnable(boolean enable) {
    		  detail.setEnabled(enable);
    	  }
     
    	  public boolean isCellEditable(EventObject anEvent) {
    	    return true;
    	  }	  
     
    	  public boolean shouldSelectCell(EventObject anEvent) {
    	    return true;
    	  }
     
    	  public boolean stopCellEditing() {
    	    return true ; // pour ne pas pouvoir recommencer une édition
    	    //return false ; // pour pouvoir recommencer une édition
    	  }
     
    	  public void cancelCellEditing() {  
    	  }
     
    	  public void addCellEditorListener(CellEditorListener l) {  
    	  }
     
    	  public void removeCellEditorListener(CellEditorListener l) {
    	  }
    Pourriez vous m'aider?

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Dans le actionPerformed de ton BoutonDetailEditor, appelle une méthode de ta JTable qui aura un comportement différent suivant la ligne sélectionnée de ta JTable.
    Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    detail.addActionListener(new ActionListener(){
    	public void actionPerformed(ActionEvent event) {
    		      actionToPerform(event);
    	}
    });
     
    public void actionToPerform(ActionEvent event) {
    	switch (getselectedRow()) {
    	case 0 :
    		//première action
    		break;
    	case 1 :
    		//deuxièmee action
    		break;
    	case 2 :
    		//troisième action
    		break;
    	default :
    		break;
    	}
    }

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut
    merci,
    mais ca ne solutionne pas tout mes problèmes. En effet, lors du clic sur le button, je veux changer le text de celui-ci. Or quand je fais cela, ca me change le texte sur tous les boutons.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/05/2008, 16h17
  2. Jtable créée avec model et filtre, probleme de tri
    Par pequina dans le forum Composants
    Réponses: 18
    Dernier message: 04/08/2006, 09h24
  3. Probleme avec les JTable et CellRenderer
    Par Sylmandel dans le forum Composants
    Réponses: 1
    Dernier message: 14/04/2006, 09h21
  4. Probleme avec JTable
    Par Janitrix dans le forum Composants
    Réponses: 4
    Dernier message: 04/04/2006, 18h10
  5. problèeme avec un JTable
    Par Rayley dans le forum Composants
    Réponses: 1
    Dernier message: 03/01/2006, 01h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo