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] mettre deS checkbox dans une cellule


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] mettre deS checkbox dans une cellule
    Bon j'aivais ouvert il y a trois semaine un sujet la dessus mais j'avoue que j'ai pas eu une réponse qui m'a permis de résoudre le problème, peut être parceque je m'expliquais mal donc je repars donc de 0.

    J'ai une JTable dans laquelle je veut mettre 3 JCheckBox dans UNE seule cellule. etant donnée que je semble avoir un problème avec les cellRenderer et les CellEditor ...

    Enfin pour CellRenderer ca va etant donné que je vois mes checkBox, mais pour le cellEditor là je nage dans la choucroute ....

    Merci d'avance
    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 habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Si tu veux mettre 3 checkbox dans la MEME cellule, je vois pas 50 moyens ...

    Il faut te créer un composant (qui etends JPanel par exemple) et qui contient tes 3 Checkbox ... Avec les methodes de traitement qui vont bien ...

    Et ce composant tu l'affiche dans le renderer de ton tableau !

    Bon courage !

  3. #3
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Petite qustion à la noix... Es tu allé faire un tour sur le tutoriel de Sun?
    Comment utiliser les Tables (C'est la parti qui concerne les ComboBox. Mais si tu peux le faire avec des ComboBox, je vois pas pourquoi tu ne pourrais pas le faire avec des CheckBox ou autre...)
    Voilà, j'espères que ça te sera utiles

    ++
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  4. #4
    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
    oui T T on me sort toujours le même tutaux .. et ca marche pas (ou alors je le comprend pas ...) j'ai essayer de faire un renderer mais rien a faire il se passe rien ...


    ma table :
    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
     
    public class ResultTable extends JTable{
     
    	private static final long serialVersionUID = 19L;
     
    	public TableCellRenderer getCellRenderer(int row, int column)
    	{
    		if (this.getValueAt(row, column)!=null && this.getValueAt(row, column).getClass().equals(SelectCellObject.class))
    		{
     
    			return (SelectCellObject)this.getValueAt(row, column);
    		}
    		else return new DefaultTableCellRenderer();
    	}
     
    	public TableCellEditor getCellEditor(int row, int column)
    	{
    		if (this.getValueAt(row, column)!=null && this.getValueAt(row, column).getClass().equals(SelectCellObject.class))
    			return (SelectCellObject)this.getValueAt(row, column);
    		else return this.getDefaultEditor(String.class);
    	}
    et le JPanel avec checkBox:
    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
     
    public class SelectCellObject extends JPanel implements TableCellRenderer , TableCellEditor{
     
    	int _state;
    	JCheckBox _always, _never;
    	String _gene;
    	private static final long serialVersionUID = 15L;
     
    	SelectCellObject(String geneName)
    	{
    		this.setLayout(null);
    		this.setBackground(new Color(0,0,0,0));
    		_gene = geneName;
    		_state = 0;
    		_always = new JCheckBox("+");
    		_always.addActionListener(new AlwaysListener());
    		_always.setBounds(0, 0, 50, 20);
    		this.add(_always);
     
    		_never = new JCheckBox("-");
    		_never.addActionListener(new NeverListener());
    		_never.addActionListener(new NeverListener());
    		_never.setBounds(50, 0, 50, 20);
    		this.add(_never);
    	}
     
    	public String getGene()
    	{
    		return _gene;
    	}
     
    	public int getState()
    	{
    		return _state;
    	}
     
    	class AlwaysListener implements ActionListener
    	{
                  public void actionPerformed(ActionEvent event) {
    			if (_always.isSelected())
    			{
    				_never.setSelected(false);
    				_state = 1;
     
    			}
    			else
    				_state = 0;
    		}
    	}
     
    	class NeverListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent event) {
    			if (_never.isSelected())
    			{
    				_always.setSelected(false);
    				_state = -1;
    			}
    			else
    				_state = 0;
    		}
    	}
     
    	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) {
     
     
    	}
     
    	public void cancelCellEditing() {
    		// TODO Auto-generated method stub
     
    	}
     
    	public Object getCellEditorValue() {
    		// TODO Auto-generated method stub
    		return this;
    	}
     
    	public boolean isCellEditable(EventObject event) {
    		// TODO Auto-generated method stub
    		return true;
    	}
     
    	public void removeCellEditorListener(CellEditorListener listener) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public boolean shouldSelectCell(EventObject event) {
    		// TODO Auto-generated method stub
    		return true;
    	}
     
    	public boolean stopCellEditing() {
    		// TODO Auto-generated method stub
    		return false;
    	}
    }
    Affichage nickel mais aucune réaction !
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  5. #5
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par Lady Voir le message
    Affichage nickel mais aucune réaction !
    C'est à dire?
    Pas de questions technique par MP, les forums sont là pour ça.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est normal.
    A partir du moment où il y a interaction avec l'utilisateur c'est l'Editor qui prend le relais du Renderer, donc il te faut également coder un editor pour ta JTable
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    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 sinok Voir le message
    C'est normal.
    A partir du moment où il y a interaction avec l'utilisateur c'est l'Editor qui prend le relais du Renderer, donc il te faut également coder un editor pour ta JTable
    ce n'est pas ce que j'ai fais là ??? (2 posts au dessus)
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  8. #8
    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
    Remonte le poste ! aujourd'hui reussir mon histoir de checkbox dans une JTable est mon objectif !

    Donc je résume : affichage nickel , Par contre je n'arrive pas a faire fonctionné les celleditor (comme je ne comprend pas parfaitement leur fonctionnement ca doit surement venir de là)
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  9. #9
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Citation Envoyé par Lady Voir le message
    Remonte le poste ! aujourd'hui reussir mon histoir de checkbox dans une JTable est mon objectif !

    Donc je résume : affichage nickel , Par contre je n'arrive pas a faire fonctionné les cellrenderer (comme je ne comprend pas parfaitement leur fonctionnement ca doit surement venir de là)
    Salut,

    Toujours tiré du tuto de Sun Comment utiliser les Tables (partie Editor/Renderer):
    You can think of the renderer as a configurable ink stamp that the table uses to stamp appropriately formatted data onto each cell. When the user starts to edit a cell's data, a cell editor takes over the cell, controlling the cell's editing behavior.
    Je pense que c'est assez explicite, un Renderer est "l'habillage par défaut" des cellules de ta table.

    J'espères que ça t'aidera à comprendre les Renderers... et donc que ça te servira pour ton problème.

    ++
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  10. #10
    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
    oups c'était cellEditor que je voualis mettre ... désolée , (enfin les 2 j'ai un peu de mal)
    mais surtout le cellEditor ^^
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  11. #11
    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 j'essaye de facilité les chose : je vais faire une checkBox par case ... j'ai vu que ca pouvais le faire de base mais un ca ne semble pas marché (j'ai essyé un peu a la barbare) de deux j'ai de action a faire au clic ce n'est pas juste passer de true à false ...

    donc si vous arriver a m'expliqué pour un simple JCheckbox dans la cellule je comprendrais peut etre pour un JPanel entier !
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  12. #12
    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
    Oh j'ai réussi ! (même si je pense pas avoir tout compris comment lol)
    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. Mettre un checkbox dans une jtable
    Par ayezinehayeme dans le forum Composants
    Réponses: 1
    Dernier message: 29/04/2014, 08h18
  2. mettre un checkbox dans une jtable
    Par christianf dans le forum Composants
    Réponses: 9
    Dernier message: 20/11/2010, 18h52
  3. Réponses: 1
    Dernier message: 26/05/2010, 15h34
  4. Réponses: 2
    Dernier message: 19/10/2009, 21h27
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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