JTable et chekbox

Résolu
Signaler
Messages postés
28
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
12 mai 2010
-
Messages postés
28
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
12 mai 2010
-
salut tout le monde,
j'ai problème avec JTable, en effet je veus remplir une colonne de JTable avec des checkbox et qui je peux le sélectionner.
quelqu'un peu m'aider??
avec cette commande je ne peus pas sélectionner le chek box c tout simplement visuelle:

*>tableET1.getColumnModel().getColumn(5).setCellRenderer(tableET1.getDefaultRenderer(Boolean.class));

merci d'avance pour votre aide

7 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Les Checkbox dans un composant JTable sont en réalité des données de nature booléene (true/false).

Pour pouvoir afficher ces données booléene en tant que composants JCheckBox, il faut redéfinir la méthode getColumnClass(int). On peut trouver cette méthode soit dans la classe JTable, soit dans l'interface TableModel et biensûr dans toutes les classes implémentant cette interface.

Object[][] data = {
    new Object[] {"A.", 25, true},
    new Object[] {"H.", 23, false}
};

Object[] columnNames = {"Name", "Age", "Single"}

DefaultTableModel model = new DefaultTableModel(data, columnNames) {
    public Class getColumnClass(int column) {
       return getValueAt(0, column).getClass();
    }
};

JTable table = new JTable(model);
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Pour la question concernant le checkbox coché.

Rappeles toi, que les checkbox dans un JTable sont en réalité des données booléenes (true/false).

Pour savoir l'état d'un checkbox donné utilises la méthode getValueAt().

// Supposons que les checkbox sont rangés dans la première colonne
// Pour tester si la première checkbox est cochée, tu peux faire
boolean checked = (Boolean)table.getValueAt(0, 0);

// Pour cocher le premier chechbox
table.setValueAt(0, 0, Boolean.TRUE);
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
Avec un "return types[column];" ta méthode "getColumnClass" ne se plantera plus

package test;
/*
 * SuiviRealisation.java
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class SuiviRealisation extends JFrame {

    private Box box1 = Box.createVerticalBox();
    private JPanel pBout1 = new JPanel();
    private JButton modifier1 = new JButton("MODIFIER");
    private JButton accepter1 = new JButton("ACCEPTER");
    private JScrollPane jScrollPane1 = new JScrollPane();
    private JTable tableET1;

    public SuiviRealisation() {
        super("Suivi de la realisation des étapes d'intégration");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Object[][] data =
                new Object[][]{
            new Object[]{"Etat des lieux - diagnostic", null, null, null, null, true},
            new Object[]{"    1- Diagnostic de l'organisation et/ou des sous - systèmes existants", null, null, null, null, null, true},
            new Object[]{"    2- Ecarts par rapport aux référentiels choisis", null, null, null, null, null, null},
            new Object[]{"Définition et hiérarchisation des objectifs de l'intégration", null, null, null, null, null, null},
            new Object[]{"    1- Iidentification des écarts à corriger", null, null, null, null, null, null},
            new Object[]{"    2- Fixation des objectifs à partir de ces écarts et du niveau d'intégration recherché", null, null, null, null, null, null},
            new Object[]{"    3- Hiérarchisation des objectifs par une analyse de risque", null, null, null, null, null, null},
            new Object[]{"Programmation des phases du projet", null, null, null, null, null, null},
            new Object[]{"    1- Intégration au niveau des politiques", null, null, null, null, null, null},
            new Object[]{"    2- Intégration au niveau de la communication et de la sensibilisation", null, null, null, null, null, null},
            new Object[]{"    3-Intégration au niveau des ressources humaines", null, null, null, null, null, null},
            new Object[]{"    4- Intégration au niveau des fonctions qualité, sécurité : positionnement du représentant de la direction", null, null, null, null, null, null},
            new Object[]{"    5- Intégration au niveau des processus ", null, null, null, null, null, null},
            new Object[]{"         a- Pour l'intégration globale, l'intégration de la sécurité se fait au niveau de tout les processus qualité  ", null, null, null, null, null, null},
            new Object[]{"    6- Iintégration au niveau de la gestion des documents et des enregistrements", null, null, null, null, null, null},
            new Object[]{"    7- ise en cohérence des processus spécifiques Qualité-Sécurité et gestion des interactions.", null, null, null, null, null, null},
            new Object[]{"Mise en ouvre du projet d'intégration", null, null, null, null, null, null},
            new Object[]{"    1- Planification des actions : objectifs, ressources, délais, responsables", null, null, null, null, null},
            new Object[]{"    2- Suivi de la réalisation", null, null, null, null, null, null},
            new Object[]{"    3- Correction des déviations", null, null, null, null, null, null},
            new Object[]{"Amélioration continue, boucle PDCA", null, null, null, null, null, null}};
        Object[] columnNames = new String[]{
            "Etapes", "Date début prévu", "Duré prévu", "Date début reél", "Durée réel", "colturé ou non"
        };
        DefaultTableModel model = new DefaultTableModel(data, columnNames) {

            private Class[] types = new Class[]{String.class, Date.class, Integer.class, Date.class, Integer.class, Boolean.class};
            private boolean[] canEdit = new boolean[]{
                false, false, false, true, true, true
            };

            @Override
            public Class getColumnClass(final int column) {
                return types[column];
            }

            @Override
            public boolean isCellEditable(final int rowIndex, final int columnIndex) {
                return canEdit[columnIndex];
            }
        };
        tableET1 = new JTable(model) {

            private final Color C1 = new Color(255, 255, 232);
            private final Color C2 = new Color(241, 249, 254);

            @Override
            public Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                if (!isRowSelected(row) || (isRowSelected(row) && !isColumnSelected(column))) {
                    c.setBackground(row % 2 == 0 ? C1 : C2);
                }
                return c;
            }
        };
        jScrollPane1.setViewportView(tableET1);
        jScrollPane1.getViewport().setBackground(SystemColor.activeCaptionBorder);
        tableET1.setColumnSelectionAllowed(true);
        tableET1.setPreferredScrollableViewportSize(new Dimension(1200, 350));
        tableET1.getColumnModel().getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        tableET1.getColumnModel().getColumn(0).setPreferredWidth(600);
        tableET1.getColumnModel().getColumn(1).setResizable(false);
        tableET1.getColumnModel().getColumn(1).setPreferredWidth(100);
        tableET1.getColumnModel().getColumn(2).setPreferredWidth(100);
        tableET1.setFont(new Font("Dialog", Font.BOLD + Font.ITALIC, 13));
        pBout1.add(accepter1);
        pBout1.add(modifier1);
        box1.add(jScrollPane1);
        box1.add(pBout1);
        add(box1);
        pack();
    }

    public static void main(final String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                new SuiviRealisation().setVisible(true);
            }
        });
    }
}
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

[auteur/UHRAND/779037.aspx uhrand] >> Cette approche est vraimant plus sûre.

Cordialement.
Messages postés
28
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
12 mai 2010

merci pour votre aide mais ca ne fonctionnne pas, voici mon code por mieux le voire il ya 1 exception dans l'exécution dans le code que vos m'avez donner:

**************************
package test;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Suivi_realisation extends JFrame {   
        Box B1=Box.createVerticalBox();
       
        JPanel PTab1=new JPanel();
        JPanel PBout1=new JPanel();
       
       
        JButton modifier1=new JButton("MODIFIER");
        JButton accepter1=new JButton("ACCEPTER");
       
         JPanel jPanel11 = new JPanel();
         JScrollPane jScrollPane1 = new JScrollPane();
         JTable tableET1 = new JTable();

       
        /**   Creates new form planification    */
        public Suivi_realisation() {
            super("Suivi de la realisation des étapes d'intégration");
            initComponents();
        }
       
      
       
        private void initComponents() {

             setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

             Object[][] data =
                new Object [][] {
                   new Object [] {"Etat des lieux – diagnostic", null, true,null,null,true},
                   new Object [] {"    1- Diagnostic de l’organisation et/ou des sous – systèmes existants", null, null,null,null,true,true},
                   new Object [] {"    2- Ecarts par rapport aux référentiels choisis", null, null,null,null,null,null},
                   new Object [] {"Définition et hiérarchisation des objectifs de l’intégration", null, null,null,null,null,null},
                   new Object []{"    1- Iidentification des écarts à corriger", null, null,null,null,null,null},
                   new Object []{"    2- Fixation des objectifs à partir de ces écarts et du niveau d’intégration recherché", null, null,null,null,null,null},
                   new Object [] {"    3- Hiérarchisation des objectifs par une analyse de risque", null, null,null,null,null,null},
                   new Object [] {"Programmation des phases du projet", null, null,null,null,null,null},
                   new Object [] {"    1- Intégration au niveau des politiques", null, null,null,null,null,null},
                   new Object [] {"    2- Intégration au niveau de la communication et de la sensibilisation", null, null,null,null,null,null},
                   new Object [] {"    3-Intégration au niveau des ressources humaines", null, null,null,null,null,null},
                   new Object []  {"    4- Intégration au niveau des fonctions qualité, sécurité : positionnement du représentant de la direction", null, null,null,null,null,null},
                   new Object [] {"    5- Intégration au niveau des processus ", null, null,null,null,null,null},
                   new Object [] {"         a- Pour l’intégration globale, l’intégration de la sécurité se fait au niveau de tout les processus qualité  ", null, null,null,null,null,null},
                   new Object [] {"    6- Iintégration au niveau de la gestion des documents et des enregistrements", null, null,null,null,null,null},
                   new Object [] {"    7- ise en cohérence des processus spécifiques Qualité-Sécurité et gestion des interactions.", null, null,null,null,null,null},
                   new Object [] {"Mise en œuvre du projet d’intégration", null, null,null,null,null,null},
                   new Object [] {"    1- Planification des actions : objectifs, ressources, délais, responsables", null, null,null,null,null},
                   new Object [] {"    2- Suivi de la réalisation", null, null,null,null,null,null},
                   new Object [] {"    3- Correction des déviations", null, null,null,null,null,null},
                   new Object [] {"Amélioration continue, boucle PDCA", null, null,null,null,null,null}
                };
             Object[] columnNames=new String [] {
                    "Etapes", "Date début prévu", "Duré prévu","Date début reél","Durée réel","colturé ou non"
                };
             
     
             DefaultTableModel model = new DefaultTableModel(data, columnNames)
           
             {
                    public Class getColumnClass(int column) {
                       return getValueAt(0,column).getClass();
                    }
                };
               
                JTable tableET1 = new JTable(model);
       
               
             /*
             {
                   boolean[] canEdit = new boolean [] {
                           false, false, false, true, true, true
                       };

                       public boolean isCellEditable(int rowIndex, int columnIndex) {
                           return canEdit [columnIndex];
                        
                       }};
              
                       */
          
           
         
           
            //JCheckBox urgence = new JCheckBox();  //le checkBox QUI MARCHE ¨PAS
            //tableET1.getColumnModel().getColumn(5).setCellRenderer(tableET1.getDefaultRenderer(Boolean.class));
            //tableET1.setDefaultEditor(Integer.class, new MyAbstractCellEditor());
         
            JToggleButton vraie1 = new JToggleButton();
                     
            jScrollPane1.setViewportView(tableET1);
            jScrollPane1.getViewport().setBackground(SystemColor.activeCaptionBorder);
           
            tableET1.setColumnSelectionAllowed(true); 
            tableET1.setPreferredScrollableViewportSize(new Dimension(1200, 350));
            tableET1.getColumnModel().getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            tableET1.getColumnModel().getColumn(0).setPreferredWidth(600);
            tableET1.getColumnModel().getColumn(1).setResizable(false);
            tableET1.getColumnModel().getColumn(1).setPreferredWidth(100);
            tableET1.getColumnModel().getColumn(1).setPreferredWidth(100);
            tableET1.getColumnModel().getColumn(2).setPreferredWidth(100);
           
            tableET1.setFont(new java.awt.Font("Dialog", 3, 13));
           
          
        /*   
            Object[][] data = {
                    new Object[] {"Etat des lieux – diagnostic", 25, true},
                    new Object[] {"H.", 23, false}
                };
           
                Object[] columnNames = {"Name", "Age", "Single"};

                DefaultTableModel model = new DefaultTableModel(data, columnNames) {
                    public Class getColumnClass(int column) {
                       return getValueAt(0, column).getClass();
                    }
                };
*/
           
               
           PBout1.add(accepter1);
            PBout1.add(modifier1);
           
            B1.add(jScrollPane1);
            B1.add(PBout1);
            add(B1);
           //add(table);
        }

       
       
       
                
        public static void main(String args[]) {
           
            Suivi_realisation x=new Suivi_realisation();
            x.addWindowListener(new WindowAdapter(){
                public void WindowClosing(WindowEvent e)
                {
                    System.exit(0);
                }
            });
           
            x.setVisible(true);
            x.pack();
        }
          
    }

*******************************
ET pouvez vous me dire comment récupirer quel chexkbox a été coché(quel ligne)
aide moi SVP
Messages postés
28
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
12 mai 2010

Merci,beaucoup pour votre aide,ca fonctionne
je suis la avec vous
Messages postés
28
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
12 mai 2010

merci beaucoup à tous
je suis la avec vous