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 :

2 boutons dans une cellule


Sujet :

Composants Java

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut 2 boutons dans une cellule
    Bonjour à tous,

    Je me demandais si c'était possible de mettre 2 boutons dans une même cellule et d'utiliser renderer et editor?
    Si oui, y a t'il un exemple quelque part?
    Merci

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Salut !

    Mettre les deux boutons dans un panel, et le panel dans une cellule ?
    peut-être que....

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    En faite je cherche à changer l'ordre d'affichage des lignes.
    Les 2 boutons ont pour effet, soit de monté d'une ligne, soit de descendre d'une ligne.
    Il y a peut être un autre moyen plus simple?
    Je cherche a classer par l'ordre voulu, les lignes du tableau Jtable.
    Mais en plus de classer les lignes du tableau, ça doit également modifier le champ ordre de la bdd.

    Si vous avez d'autres idées!

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Si vous avez des idées pour me permettre de modifier l'ordre d'affichage des lignes.

  5. #5
    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
    Il te suffit de créer un editor et un renderer contenant deux boutons dans un JPanel comme le suggère fraco...

    Où est le problème


    Puis pour la mise à jour de ta base de données, il suffit de t'appuyer sur un TableModelListener placé sur le modèle de ta JTable qui te permet d'être prévenu des toutes les modifications de ta JTable. (Bien sûr, toutes les échanges avec la base de données doivent être réalisés dans un Thread séparé histoire de ne pas bloquer l'interface).

    Si tout ce que je dis ne te parle en rien, bah va falloir que tu retourne bouffer des tutos:

    JTable: http://baptiste-wicht.developpez.com.../swing/jtable/
    Interaction Swing/Threads: http://gfx.developpez.com/tutoriel/j...ing-threading/
    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.

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Merci pour vos réponses, j'ai pas eu le temps de regarder. Je vais m'y mettre.
    Problème résolu

  7. #7
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    J'ai eu le temps de m'y remettre, j'ai regardé tous les tutoriels indiqué, je suis arrivé a la photo en pièce jointe.
    J'ai donc bien 2 boutons dans un JPanel avec une photo a l'intérieur.
    Le problème c'est que ce n'est pas cliquable. Et que les actions au click, ne retourne rien.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PanelRenderer case_renderer = new PanelRenderer();
    table2.getColumn("Ordre").setCellRenderer(case_renderer);//Affichage du bouton
    PanelEditor case_editor= new PanelEditor(new JCheckBox());
    table2.getColumn("Ordre").setCellEditor(case_editor);//Lorsqu'on clique sur le bouton
    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
    public class PanelRenderer extends DefaultTableCellRenderer {
        private Icon fleche_haut;
        private Icon fleche_bas;
        private JButton bouton_bas=new JButton();
        private JButton bouton_haut=new JButton();
        private JPanel cel;
        private String bouton="competitions";
     
    	public PanelRenderer() {
            super();
     
            fleche_haut = new ImageIcon("images/fleche_haut.gif");
            fleche_bas = new ImageIcon("images/fleche_bas.gif");
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            Tableau_article_model table_model = (Tableau_article_model) table.getModel();
            cel= new JPanel();
            bouton_haut.setMargin(new Insets(1, 1, 1, 1));
            bouton_bas.setMargin(new Insets(1, 1, 1, 1));
            if(row==table_model.getRowCount()-1){
            	bouton_haut.setIcon(fleche_haut);
                cel.add(bouton_haut);
            }
            else if(row==0){
            	bouton_bas.setIcon(fleche_bas);
            	cel.add(bouton_bas);
            }
            else {
            	bouton_bas.setIcon(fleche_bas);
            	cel.add(bouton_bas);
            	bouton_haut.setIcon(fleche_haut);
            	cel.add(bouton_haut);
            }
            return cel;
        }
    }
    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
    public class PanelEditor extends DefaultCellEditor {
    	protected JButton button;
    	private ButtonListener bListener = new ButtonListener();
     
    	public PanelEditor(JCheckBox checkBox) {
    		super(checkBox);
    	    //On crée à nouveau notre bouton
    		button = new JButton();
    	    button.setOpaque(true);
    	    //On lui attribue un listener
    	    button.addActionListener(bListener);
    	}
    	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    		Tableau_article_model table_model = (Tableau_article_model) table.getModel();
            button.setMargin(new Insets(1, 1, 1, 1));
    		return button; 
     
    	}
    }
    class ButtonListener implements ActionListener{
     
    	private int column;
    	private int row;
    	private JTable table;
    	private int nbre = 0;
    	private JButton button;
    	private Datetime date;
    	public void setColumn(int col){this.column = col;}
    	public void setRow(int row){this.row = row;}
    	public void setTable(JTable table){this.table = table;}
    	public JButton getButton(){return this.button;}
     
    	public void actionPerformed(ActionEvent event) {
    		this.button = ((JButton)event.getSource());
    		System.out.println("bouton action bas");
    	}
    }

    Le problème est que je ne sais pas comment faire pour connaitre sur quels boutons l'action s'est produite dans PanelEditor.

    Merci
    Images attachées Images attachées  

  8. #8
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Je sais que le problème vient de PanelEditor.

    Mais je ne vois pas comment distinguer des 2 boutons ?
    Si vous pouvez m’aiguiller!

    Merci

  9. #9
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Points : 191
    Points
    191
    Par défaut
    Bon, j'ai passé 2 jours dessus, mais j'ai trouvé

    Je donne les classes pour ceux a qui ça intéresse:

    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
    public class ButtonsComponent extends JPanel {
        private Icon fleche_haut;
        private Icon fleche_bas;
        private JButton bouton_bas=new JButton();
        private JButton bouton_haut=new JButton();
     
    	public ButtonsComponent(){
            fleche_haut = new ImageIcon("images/fleche_haut.gif");
            fleche_bas = new ImageIcon("images/fleche_bas.gif");
            bouton_haut.setMargin(new Insets(1, 1, 1, 1));
            bouton_bas.setMargin(new Insets(1, 1, 1, 1));
     
            bouton_haut.setIcon(fleche_haut);
            bouton_bas.setIcon(fleche_bas);
     
    	    add(bouton_haut);
    	    add(bouton_bas);
    	}
    	public JButton getBouton_bas() {
    		return bouton_bas;
    	}
    	public void setBouton_bas(JButton bouton_bas) {
    		this.bouton_bas = bouton_bas;
    	}
    	public JButton getBouton_haut() {
    		return bouton_haut;
    	}
    	public void setBouton_haut(JButton bouton_haut) {
    		this.bouton_haut = bouton_haut;
    	}
    }
    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
    public class PanelRenderer extends DefaultTableCellRenderer {
     
    	private ButtonsComponent feedComponent;
     
    	public PanelRenderer() {
            super();
            feedComponent = new ButtonsComponent();
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            Tableau_article_model table_model = (Tableau_article_model) table.getModel();
     
            if(row==table_model.getRowCount()-1){
            	//on rend invisible le bouton bas
            	feedComponent.getBouton_bas().setVisible(false);
            	feedComponent.getBouton_haut().setVisible(true);
            }
            else if(row==0){
            	//on rend invisible le bouton haut
            	feedComponent.getBouton_bas().setVisible(true);
            	feedComponent.getBouton_haut().setVisible(false);
            }
            else
            {
            	//on rend les boutons visibles
            	feedComponent.getBouton_bas().setVisible(true);
            	feedComponent.getBouton_haut().setVisible(true);
            }
     
            return feedComponent;
        }
    }
    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
    public class PanelEditor extends DefaultCellEditor {
    	protected JButton button_haut;
    	private ButtonListener_bas bListener_bas = new ButtonListener_bas();
    	private ButtonListener_haut bListener_haut = new ButtonListener_haut();
    	private ButtonsComponent feedComponent;
    	private JButton button_bas;
     
    	public PanelEditor(JCheckBox checkBox) {
    		super(checkBox);
    	    //On crée à nouveau notre bouton
    		feedComponent = new ButtonsComponent();
    		button_bas=feedComponent.getBouton_bas();
    		button_haut=feedComponent.getBouton_haut();
    		button_bas.setOpaque(true);
    		button_haut.setOpaque(true);
    	    //On lui attribue un listener
    		button_bas.addActionListener(bListener_bas);
    		button_haut.addActionListener(bListener_haut);
    	}
    	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    		Tableau_article_model table_model = (Tableau_article_model) table.getModel();
    		if(row==table_model.getRowCount()-1){
            	//on rend invisible le bouton bas
            	feedComponent.getBouton_bas().setVisible(false);
            	feedComponent.getBouton_haut().setVisible(true);
            }
            else if(row==0){
            	//on rend invisible le bouton haut
            	feedComponent.getBouton_bas().setVisible(true);
            	feedComponent.getBouton_haut().setVisible(false);
            }
            else
            {
            	//on rend les boutons visibles
            	feedComponent.getBouton_bas().setVisible(true);
            	feedComponent.getBouton_haut().setVisible(true);
            }
    		return feedComponent; 
     
    	}
    }
    class ButtonListener_bas implements ActionListener{
     
    	private int column;
    	private int row;
    	private JTable table;
    	private int nbre = 0;
    	private JButton button;
    	public void setColumn(int col){this.column = col;}
    	public void setRow(int row){this.row = row;}
    	public void setTable(JTable table){this.table = table;}
    	public JButton getButton(){return this.button;}
     
    	public void actionPerformed(ActionEvent event) {
    		this.button = ((JButton)event.getSource());
    		System.out.println("bouton action bas");
    	}
    }
    class ButtonListener_haut implements ActionListener{
     
    	private int column;
    	private int row;
    	private JTable table;
    	private int nbre = 0;
    	private JButton button;
    	public void setColumn(int col){this.column = col;}
    	public void setRow(int row){this.row = row;}
    	public void setTable(JTable table){this.table = table;}
    	public JButton getButton(){return this.button;}
     
    	public void actionPerformed(ActionEvent event) {
    		this.button = ((JButton)event.getSource());
    		System.out.println("bouton action haut");
    	}
    }
    Et enfin l'ajout dans le panel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PanelRenderer case_renderer = new PanelRenderer();
    table2.getColumn("Ordre").setCellRenderer(case_renderer);//Affichage du bouton
    PanelEditor case_editor= new PanelEditor(new JCheckBox());
    table2.getColumn("Ordre").setCellEditor(case_editor);//Lorsqu'on clique sur le bouton

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

Discussions similaires

  1. [XL-2003] Insérer une photo à l'aide d'un bouton dans une cellule fusionnée
    Par iIncoming dans le forum Excel
    Réponses: 7
    Dernier message: 18/03/2013, 18h08
  2. [WD11] ajout d'un bouton dans une cellule
    Par labifle dans le forum WinDev
    Réponses: 3
    Dernier message: 04/05/2010, 14h15
  3. Inserer un bouton dans UNE cellule d'un JTable
    Par Su dans le forum Composants
    Réponses: 9
    Dernier message: 22/07/2009, 13h59
  4. JTable : comment insérer un bouton dans une cellule ?
    Par donyas dans le forum Composants
    Réponses: 2
    Dernier message: 08/08/2006, 15h54
  5. Mettre un bouton dans une cellule !!!!
    Par mehdi82 dans le forum Composants
    Réponses: 2
    Dernier message: 22/11/2005, 09h51

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