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

AWT/Swing Java Discussion :

JComboBox dans une JXTable


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club Avatar de Hyperion99
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 35
    Points
    35
    Par défaut JComboBox dans une JXTable
    Bonjour

    Novice en la matière j'espère trouver une âme charitable qui pourrait m'orienter (la réponse est aussi bien venue ) pour le problème suivant :
    Je voudrais pouvoir inserer des JCombobox dans les cellules d'une colonne d'une JXTable. Ces combos contienent une liste qui varie en fonction de la valeur d'une autre cellule (de la même ligne).
    Exemple : la cellule (0,0) contient le nom d'une ville X et la cellule (0,1) contient une combo contenant la liste des arrondissement de la ville X

    si quelqu'un à la gentillesse de m'accorder quelques minutes ...
    Merci d'avance

  2. #2
    Nouveau membre du Club Avatar de Hyperion99
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    en cherchant (oui oui je sais j'aurai du faire ca avant de poster :$) j'ai trouvé (enfin je crois:p) la solution à mon problème : (toute remarque est bien sur le bienvenue...)

    il faut définir un TableCelleEditor et un TableCellRenderer :

    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
     
    public class MyDefaultTableCellRenderer extends DefaultTableRenderer {
            JComboBox combo;
     
            public MyDefaultTableCellRenderer() {
                super();
                combo = new JComboBox(new ComboBoxListModel());
                combo.setRenderer(new ComboBoxMapRenderer());
            }
     
            public Component getTableCellRendererComponent(JTable jTable, Object object, boolean b, boolean b1, int  row, int col) {
                return combo;
            }
        }
     
     
     public class MyDefaultTableCellEditor extends AbstractCellEditor implements TableCellEditor {
            JComboBox combo;
     
            public MyDefaultTableCellEditor() {
                super();
                combo = new JComboBox(new ComboBoxListModel());
                combo.setRenderer(new ComboBoxMapRenderer());
     
            }
     
            public Object getCellEditorValue() {
                return combo.getSelectedItem();
            }
     
           public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
     
                //recuperation de la ville contenu dans la ligne de mon tableau
                Ville ville =   ((ListTableModel) table.getModel()).getRow(row);           
     
                 ((ComboBoxListModel) combo.getModel()).setList(  ctrl.getModel().getLstAllFonction());
                  updateLstRoleItems(combo);            
                return combo;
            }
        }

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083

  4. #4
    Nouveau membre du Club Avatar de Hyperion99
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Merci Natha pour ta réponse.

    Cependant après réflexion je me rend compte que la méthode du CellEditor n'est peut être pas la plus appropriée pour les JXTable.

    En effet si je n'ai pas compris de travers, les JXTable utilisent les méthodes de l'interface TableModel pour définir les valeurs à afficher, pour savoir si les cellules sont éditables, pour saisir des données dans une cellules, pour définir des filtres sur les valeurs contenues dans le tableau ... Je suppose qu'il doit donc exister l'équivalent des CellEditor pour les implémentation de TableModel ...

    Bonne journée

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Non, tu supposes mal.
    JXTable fonctionne globalement de la même façon que JTable pour le TableModel et TableCellEditor.
    Le concept change légèrement pour les renderers car SwingX met à disposition un mécanisme d'Highlighter (conditionnels ou pas).

  6. #6
    Nouveau membre du Club Avatar de Hyperion99
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    ok , merci beaucoup

    bonne fin de journée

  7. #7
    Membre régulier Avatar de CORTEZ
    Profil pro
    Dev : Java/J2EE
    Inscrit en
    Juillet 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Dev : Java/J2EE
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2007
    Messages : 59
    Points : 82
    Points
    82
    Par défaut
    oui c'est le cas de tous les composants de SwingX

    j'ai fait un déboggage de JXTable et j'ai trouvé qu'elle hérite directement de JTable

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par CORTEZ Voir le message
    oui c'est le cas de tous les composants de SwingX

    j'ai fait un déboggage de JXTable et j'ai trouvé qu'elle hérite directement de JTable
    Enfin bon pour trouver ce genre d'infos la javadoc de Swingx c'est un poil plus rapide quand même

Discussions similaires

  1. Changer la couleur des lignes dans une JXTable
    Par guimo26 dans le forum Composants
    Réponses: 1
    Dernier message: 17/03/2009, 18h40
  2. [JTable] JcomboBox dans une cellule
    Par agentmob dans le forum Composants
    Réponses: 1
    Dernier message: 06/06/2008, 00h02
  3. [JTable] affichage d'une JComboBox dans une cellule
    Par monpseudonom dans le forum Composants
    Réponses: 1
    Dernier message: 10/04/2008, 07h06
  4. [Debutant] créer un JComboBox dans une JFrame
    Par sliderman dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 15/01/2008, 21h26
  5. supprimer un item d'un jcombobox dans une jtable
    Par bellout dans le forum Composants
    Réponses: 6
    Dernier message: 22/06/2006, 16h06

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