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 et Jcombobox


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Jtable et Jcombobox
    Bonjour,

    Désolée de vous embeter avec un sujet
    qui a été maintes fois abordé dans le forum, mais j'y arrive toujours pas
    Ca fait plusieurs jour que je suis dessus, O SE COOOOOOOURS !

    Aprsè avoir lu le forum et le tutorial de sun voici mon code.
    Mais je n'ai toujours pas de combox qui s'affiche.
    Qu'un peux m'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
     
    public void setUpSportColumn(JTable table,
                                     TableColumn sportColumn) {
            //Set up the editor for the sport cells.
            JComboBox comboBox = new JComboBox();
            comboBox.addItem("1");
            comboBox.addItem("2");
            comboBox.addItem("3");
            comboBox.addItem("4");
            comboBox.addItem("5");
            comboBox.addItem("6");
            sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
     
            //Set up tool tips for the sport cells.
            DefaultTableCellRenderer renderer =
                    new DefaultTableCellRenderer();
            renderer.setToolTipText("Click for combo box");
            sportColumn.setCellRenderer(renderer);
        }
     
     
        private JTable getJTable() {
            if (jTable == null) {
                jTable = new JTable();
                jTable.setModel(getTableActesCCAMModel());                        
                TableColumn sportColumn = jTable.getColumnModel().getColumn(5);
    			setUpSportColumn(jTable, sportColumn);        
            }
     
            return jTable;
        }
        private TableActesCCAMModel getTableActesCCAMModel() {
            if (tableActesCCAMModel == null) {
                tableActesCCAMModel = new TableActesCCAMModel(null);            
            }
            return tableActesCCAMModel;
        }
    et le code de ma TableModele
    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    package inov_sante.ihm.tablesModels;
     
    import inovans.tools.metier.CotationCCAM;
     
    import javax.swing.DefaultCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.TableColumn;
     
    import org.openoffice.java.accessibility.ComboBox;
     
    public class TableActesCCAMModel extends AbstractTableModel
        implements SuperTableModel {
        private CotationCCAM[] tableCotationCCAM = null;
    	 private String[] columnNames = {"Acte","Code","Montant","Modificateurs","Activité","Phase","Associataion"};
     
        public TableActesCCAMModel(CotationCCAM[] tableCotationCCAM) {
            super();
            this.tableCotationCCAM = tableCotationCCAM;
     
            if (this.tableCotationCCAM == null) {
                this.tableCotationCCAM = new CotationCCAM[5];
            }       
        }
     
        public int getColumnCount() {
            return columnNames.length;
     
        }
     
        public int getRowCount() {
            int nb = 0;
     
            for (int i = 0; i < 5; i++) {
                if (tableCotationCCAM[i] != null) {
                    nb++;
                }
            }
     
            return nb;
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            CotationCCAM cotationCCAM = tableCotationCCAM[rowIndex];
     
            if (cotationCCAM == null)
                return "";
     
            switch (columnIndex) {
            case 0:
                return cotationCCAM.getLibelle();
     
            case 1:
                return cotationCCAM.getCodeCCAM();
     
            case 2:
                return new Float(cotationCCAM.getMontant());
     
            case 3:
                return cotationCCAM.getModificateurs();
            case 4:
            	return cotationCCAM.getCodeActivite();
            case 5:
    	return  cotationCCAM.getCodePhase();
            case 6:			
    	return cotationCCAM.getCodeAssociation();
     
            default:
                return "WARNING";
            }
        }
     
        public String getColumnName(int col) {
           return columnNames[col];
        }
     
        public Object getDataAt(int rowIndex) {
            return tableCotationCCAM[rowIndex];
        }
     
        public boolean removeRow(int rowindex) {
            tableCotationCCAM[rowindex] = null;
            fireTableRowsDeleted(rowindex, rowindex);
     
            return true;
        }
     
        public boolean removeAllRow() {
            for (int i = 0; i < 5; i++) {
                tableCotationCCAM[i] = null;
            }
     
            fireTableDataChanged();
     
            return true;
        }
     
        public boolean insertRow(Object object) {
            for (int i = 0; i < 5; i++) {
                if (tableCotationCCAM[i] == null) {
                    tableCotationCCAM[i] = (CotationCCAM) object;
     
                    break;
                }
            }
     
            fireTableDataChanged();
     
            return true;
        }
     public Class getColumnClass(int columnIndex) {
     	return getValueAt(0, columnIndex).getClass();
     
     }    
     
    }

  2. #2
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    lu,

    je comprends pas trop ce que tu veux faire...

    si tu veux placer des éditeurs/renderers particuliers sur le contenu de ta table, il faut que tu fasses appelles aux méthodes :


    void setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
    Sets a default cell editor to be used if no editor has been set in a TableColumn.


    void
    setDefaultRenderer(Class<?> columnClass, TableCellRenderer
    Sets a default cell renderer to be used if no renderer has been set in a TableColumn.
    renderer)

    de la classe JTable.

    si tu veux modifier le rendu des entêtes de colonnes, tu as des méthodes analogues sur le JTableHeader de la table (mais seulement concernant les renderers puisque tu ne peux pas entrer en édition sur l'entête d'une colonne ) :

    void setDefaultRenderer(TableCellRenderer defaultRenderer)
    Sets the default renderer to be used when no headerRenderer is defined by a TableColumn.


    mais en aucun cas, tu n'agis directement sur la colonne.

    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Tu peux tres bien specifier un editor/render sur une colonne bien precise en utilisant les methodes setCellEditor()/setCellRenderer() de la class TableColumm.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    table.getColumn(0).setCellEditor(...);
    table.getColumn(0).setCellRenderer(...);
    Les deux approches (classes vs. colonnes) ont leurs avantages et leur inconvenients.

    L'une te met le meme editor/render dans toutes les colonnes pour lesquelles le TableModel retourne la bonne classe. L'autre met le meme editor/render dans toute la colonne quelques soit le type de l'objet contenu.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    je savais pas... merci bouye.
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  5. #5
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    pour ton cas, je sais pas trop ou ca plante ( ni ce qui plante ). perso, ce code là permet bien de placer un combobox en éditeur :

    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
     
    import java.awt.Point;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.DefaultCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableModel;
     
    /**
     *
     * @author Administrateur
     */
    public class TableTest
    {   
        public static void main(String[] args)
        {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
            final JTable table = new JTable();
     
            TableModel model = new DefaultTableModel(new Object[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, new String[]{"a", "b", "c"});
            table.setModel(model);
     
            frame.getContentPane().add(new JScrollPane(table));
     
            TableColumn column = table.getColumnModel().getColumn(2);
     
            JComboBox comboBox = new JComboBox();
            comboBox.addItem("1");
            comboBox.addItem("2");
            comboBox.addItem("3");
            comboBox.addItem("4");
            comboBox.addItem("5");
            comboBox.addItem("6");
            column.setCellEditor(new DefaultCellEditor(comboBox));
     
            //Set up tool tips for the sport cells.
            DefaultTableCellRenderer renderer =
                    new DefaultTableCellRenderer();
     
            renderer.setToolTipText("Click for combo box");
            column.setCellRenderer(renderer);
     
            frame.pack();
     
            frame.setVisible(true);
        }
    }
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    et merci pour les réponses.
    Bon j'ai réussi a avoir ma combobox en redéfinissant mes propres DefaultCellEditor
    et TableCellRenderer.
    Mais bon j'ai encore des soucis au niveau du selectdItem.
    MAis ça serait pour un autre épisode car j'ai d'autre priorités aujourdh'ui

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

Discussions similaires

  1. cellule Jtable avec Jcombobox
    Par mina86 dans le forum Composants
    Réponses: 2
    Dernier message: 11/08/2008, 16h18
  2. Jtable et JcomboBox
    Par Invité dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 16/11/2007, 22h50
  3. JTable et JComboBox : problème lors de l'édition
    Par Claythest dans le forum Composants
    Réponses: 13
    Dernier message: 25/04/2006, 18h18
  4. JTable et JComboBox
    Par alex.nd dans le forum Composants
    Réponses: 3
    Dernier message: 24/02/2006, 10h37
  5. [JTable] et JcomboBox
    Par lilou77 dans le forum Composants
    Réponses: 0
    Dernier message: 01/11/2005, 16h13

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