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 recuperer une cellule specifique


Sujet :

Composants Java

  1. #1
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut JTable recuperer une cellule specifique
    Bonjour,

    Ca fait une heure que je lis le forum et que j'assaye plein de truc mais j'y arrive pas ...


    Donc j'a i un JTable dans laquel je veux mettre des JButton

    j'ai donc mon bouton qui etand JButton, implemente CellRenderer et CellEdistor ... c'est bien mais je n'arriva pas a trouver ou dire a ma JTable que c'est le cellRenderer et editor du bouton que je veux ...

    Ou cela se fait t'il d'habitude ? sachant que chaque bouton a son CellEditor propre qui depend de parmaetre entré a la création du bouton ??

    Je ne peut surement le faire que dans mon model, j'ai donc passer le table au model (c'est pas très jolie mais bon ..) et tout serais parfais si je pouvais indiquer a une cellule particulière sont editor particulier .. mais JTable.getCellAt n'existant pas je seche ...


    le code du bouton si ca peut aider :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.EventObject;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.event.CellEditorListener;
    import javax.swing.table.TableCellEditor;
    import javax.swing.table.TableCellRenderer;
     
     
    public class RemoveButton extends JButton implements TableCellRenderer , TableCellEditor{
     
    	String _type;
    	String[] _target;
    	ResultTableModel _model;
     
    	RemoveButton(String type, String[] target, ResultTableModel model)
    	{
    		super(new ImageIcon("./image/croix1.gif"));
    		_type = type;
    		_target = target;
    		_model = model;
     
    		this.setBounds(0, 0, 30, 20);
    		this.addActionListener(new RemoveListener());
    	}
     
     
    	class RemoveListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{
    			if (_type.equals("gene")) _model.removeGene(_target);
    			else if (_type.equals("regulator")) _model.removeRegulation(_target);
     
    		}
    	}
     
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		// TODO Auto-generated method stub
    		return this;
    	}
     
     
    	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    		// TODO Auto-generated method stub
    		return this;
    	}
     
    	public void addCellEditorListener(CellEditorListener listener) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void cancelCellEditing() {
    		// TODO Auto-generated method stub
     
    	}
     
    	public Object getCellEditorValue() {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    	public boolean isCellEditable(EventObject event) {
    		// TODO Auto-generated method stub
    		return false;
    	}
     
    	public void removeCellEditorListener(CellEditorListener listener) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public boolean shouldSelectCell(EventObject event) {
    		// TODO Auto-generated method stub
    		return false;
    	}
     
    	public boolean stopCellEditing() {
    		// TODO Auto-generated method stub
    		return false;
    	}
     
     
    public static void main(String[] args) {
     
     
    		JFrame frame = new JFrame();
    		frame.setSize(400, 200);
    		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		java.awt.Toolkit toolkit=java.awt.Toolkit.getDefaultToolkit();
    		java.awt.Dimension tailleEcran=toolkit.getScreenSize();
    		java.awt.Dimension tailleFrame=frame.getSize();
    		frame.setLocation((tailleEcran.width-tailleFrame.width)/2,(tailleEcran.height-tailleFrame.height)/2);
     
    		frame.setLayout(null);
    		frame.setVisible(true);
    		frame.add(new RemoveButton("gene", new String[]{"toto"}, null));
    }
     
     
     
    }
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  2. #2
    Membre du Club Avatar de puybaret
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 65
    Points
    65
    Par défaut
    Il y a plusieurs solutions à ton problème.
    Dans un premier temps, la plus simple est probablement de redéfinir les méthodes getCellRenderer et getCellEditor dans une sous-classe de JTable pour renvoyer le renderer et l'editor que tu veux ou celui par défaut par un appel à super.getCellRenderer ou super.getCellEditor...

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par puybaret
    Il y a plusieurs solutions à ton problème.
    Dans un premier temps, la plus simple est probablement de redéfinir les méthodes getCellRenderer et getCellEditor dans une sous-classe de JTable pour renvoyer le renderer et l'editor que tu veux ou celui par défaut par un appel à super.getCellRenderer ou super.getCellEditor...

    hum ... oki je pense que j'y arriverais ^^

    Merci
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    pour le rendu visuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Component getTableCellRendererComponent(JTable table,
    				Object value, boolean isSelected, boolean hasFocus, int row,
    				int column) {
    			if (value instanceof JButton)
    				return (JButton) value;
    			return this;
    		}
    pour le bouton edité, je n ai pas reussi !
    mon getTableCellEditorComponent n ai jamais appelé

  5. #5
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    bon le cell renderer ca passe aussi ^^ maintenat l'editeur .. en fait on a tous le meme problème ... mais j'y crois je met la solution dès que j'ai trouvé ^^
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  6. #6
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    J'y arrive pas en fait au secouuuuuuuurrrrrrrrss .. y a vraiment personne qui a reussi a faire cliquer un bouton dans un JTable .... qui a implementer TableCellEcitor ?? car je sais pas du tout ce que je dois mettre dans les différente méthode et je ne trouve rien sur le net

    bon j'ai trouver comment comprendre ... 1 petit syso dans toute les methode et je sais par ou passe un clic

    j'ai plus qu'a simuler l'action ... peut on demander a un JButton de s'enfoncer ???
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    j ai aussi essayé la simulation du click lors d'un mousePressed() :

    monBouton.doClick() ;

    mais toujours pas

  8. #8
    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
    Points : 722
    Points
    722
    Par défaut
    Je n'ai jamais essayé ce que tu veux faire, mais je te conseille ce lien.
    Et plus généralement, si t'as un problème, commence par regarder ici.

  9. #9
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    bon alors ici ma solution qui permet "d'entendre" le clic et de faire la bonne action .. mais Y a pas d'animation :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    public class RemoveButton extends JButton implements TableCellRenderer , TableCellEditor{
     
    	String _type;
    	String[] _target;
    	ResultTableModel _model;
     
    	RemoveButton(String type, String[] target, ResultTableModel model)
    	{
    		super(new ImageIcon("./image/croix1.gif"));
    		_type = type;
    		_target = target;
    		_model = model;
     
    		this.setBounds(0, 0, 30, 20);
    		this.addActionListener(new RemoveListener());
    	}
     
     
    	class RemoveListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{
    			if (_type.equals("gene")) _model.removeGene(_target);
    			else if (_type.equals("regulator")) _model.removeRegulation(_target);
     
    		}
    	}
     
     
    	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    		// TODO Auto-generated method stub
     
    		return this;
    	}
     
     
    	public RemoveButton getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    		// TODO Auto-generated method stub
    		this.doClick();
    		System.out.println("1");
    		return this;
    	}
     
    	public void addCellEditorListener(CellEditorListener listener) {
    		// TODO Auto-generated method stub
    		System.out.println("2");
    	}
     
    	public void cancelCellEditing() {
    		// TODO Auto-generated method stub
    		System.out.println("3");
    	}
     
    	public Object getCellEditorValue() {
    		// TODO Auto-generated method stub
    		System.out.println("4");
    		return this;
    	}
     
    	public boolean isCellEditable(EventObject event) {
    		// TODO Auto-generated method stub
    		System.out.println("5");
    		return true;
    	}
     
    	public void removeCellEditorListener(CellEditorListener listener) {
    		// TODO Auto-generated method stub
    		System.out.println("6");
    	}
     
    	public boolean shouldSelectCell(EventObject event) {
    		// TODO Auto-generated method stub
    		System.out.println("7");
    		return false;
    	}
     
    	public boolean stopCellEditing() {
    		// TODO Auto-generated method stub
    		System.out.println("8");
    		return false;
    	}
    avec mes print j'ai donc decouvert que quand je cliquais sur un case avec un bouton ca faisais : 2 1 7 j'ai donc mis mon doCLick dans 1 ... et au moins ca marche ... comme ma ligne disparais au moment du clic le fait qu'il n'y ai pas d'animation ne me gene pas vraiment .. mais bon j'aurais peut utiliser n'import que JComponent du coup ...
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [jTable] Colorier une cellule
    Par Terminator dans le forum Composants
    Réponses: 16
    Dernier message: 28/05/2007, 16h54
  2. [JTable] Colorier une cellule d'une JTable
    Par Houssem dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2007, 14h54
  3. Changer la couleur d'une cellule specifique d'une stringgrid
    Par jamah dans le forum Composants VCL
    Réponses: 5
    Dernier message: 26/01/2006, 17h13
  4. JTable ==> Personnalisé une cellule
    Par mehdi82 dans le forum Composants
    Réponses: 7
    Dernier message: 15/11/2005, 15h36
  5. [JTable] Sélectionner une cellule
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 12/10/2005, 15h57

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