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 :

Problème avec une JTable


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Bonjour a tous ,

    j'ai un problème avec une JTable.
    Je vous explique donc pour vous situer ce que j'ais fais: j'ais créé une sorte de moteur de recherche de tables. J'ais donc une JDialog pour faire cette recherche. Elle contien 4 parties.

    La première partie pour les critères de recherche avec 3 champs : Nom table/Libellé, Nom colonne/Libellé, Nom Application/Libellé et Un bouton recherche.
    J'ais ensuite 3 JPanel. Le premier contien un JTree et affiche le résultat de la recherche par Nom d'application - catégorie _ libellé table. Le deuxième JPanel affiche dans une JTable les détails de la table sélectionnée dans le JTree; ce JPanel contien également des libellé dans lesquels j'affiche le nom de la table, le libellé, et l'application.
    Le troisième JPanel affiche les indexes des colonnes également dans une JTable. J'ais enfin une Bare d'outils avec deux boutons. Annuler pour retourner a la page précédente sans faire de seléction, et importer pour importer la table selectionnée et ses informations.

    La JDialog se ferme alors et ma JTable s'affiche alors dans un JPanel. C'est une sorte de fenètre ou mes tables s'affichent sous forme grafique. Je peux ainsi importer plusieurs JTables dans mon JPanel sans problème, enfin presque.

    Les Jtables qui s'affichent dans mon JPanel ont une particularitée et c'est la mon problème la barre d'intitulé des deux colonnes que j'affiche est, comment dire, completement tassé, si bien qu'on ne peux pas lire l'intitulé. J'ais essayé pas mal de choses pour modifier ce problème mais rien n'y fait. Je ne comprend pas comment ca se fait ... voici une partie de mon code :

    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
           private void initPanel()
        {
    //[...]
    // Panneau du schéma des tables
            _schemecontainer.setLayout(new BorderLayout());
            _schemecontainer.add(_schemetools,BorderLayout.NORTH);
            _schemepanel = new JPanel();
            GridBagLayout gridbag = new GridBagLayout();
            _schemepanel.setLayout(gridbag);
            _schemepanel.setPreferredSize(new Dimension(700,400));
            _schemecontainer.add(_schemepanel,BorderLayout.CENTER);
        }
     
        public void actionPerformed(ActionEvent evt)
        {
     
            if (_bcreate.equals(evt.getSource()))
            {
                TableWizardControler controler=new TableWizardControler();
                TableWizardViewer tabviewer=new TableWizardViewer(controler,HomeViewer.getParentFrame());
                if (!tabviewer.isCanceled())
                {
                    _controler.addTable(controler.getSelectedTable());
                    addDescribeTable(controler.getSelectedTable());
                }
            }
        }
     
        public void addDescribeTable(DataTableEntity table)
        {
            GridBagLayout gridbag=(GridBagLayout)_schemepanel.getLayout();
     
            //Création de contraintes pour le positionnement du GridBag
            GridBagConstraints constraint = new GridBagConstraints();
            constraint.fill = GridBagConstraints.HORIZONTAL;
            constraint.insets = new Insets (2,2,2,2);
            constraint.gridx = _controler.getTableCount()+1;
            constraint.gridy = 1;
            JTable tab=new JTable(table.getTableModel());
     
            //Mise en forme des colonnes
            tab.getColumnModel().getColumn(0).setPreferredWidth(80);
            //Enchainement des Set... pour rendre la colonne invisible
            tab.getColumnModel().getColumn(1).setPreferredWidth(0);
            tab.getColumnModel().getColumn(1).setMinWidth(0);
            tab.getColumnModel().getColumn(1).setMaxWidth(0);
            tab.getColumnModel().getColumn(2).setPreferredWidth(0);
            tab.getColumnModel().getColumn(2).setMinWidth(0);
            tab.getColumnModel().getColumn(2).setMaxWidth(0);
            tab.getColumnModel().getColumn(3).setPreferredWidth(0);
            tab.getColumnModel().getColumn(3).setMinWidth(0);
            tab.getColumnModel().getColumn(3).setMaxWidth(0);
            tab.getColumnModel().getColumn(4).setPreferredWidth(0);
            tab.getColumnModel().getColumn(4).setMinWidth(0);
            tab.getColumnModel().getColumn(4).setMaxWidth(0);
            tab.getColumnModel().getColumn(5).setPreferredWidth(150);
            tab.getColumnModel().getColumn(6).setPreferredWidth(0);
            tab.getColumnModel().getColumn(6).setMinWidth(0);
            tab.getColumnModel().getColumn(6).setMaxWidth(0);        
            tab.getColumnModel().getColumn(7).setPreferredWidth(0);
            tab.getColumnModel().getColumn(7).setMinWidth(0);
            tab.getColumnModel().getColumn(7).setMaxWidth(0);        
            tab.getColumnModel().getColumn(8).setPreferredWidth(0);
            tab.getColumnModel().getColumn(8).setMinWidth(0);
            tab.getColumnModel().getColumn(8).setMaxWidth(0);        
            tab.getColumnModel().getColumn(9).setPreferredWidth(0);
            tab.getColumnModel().getColumn(9).setMinWidth(0);
            tab.getColumnModel().getColumn(9).setMaxWidth(0);        
            tab.getColumnModel().getColumn(10).setPreferredWidth(0);
            tab.getColumnModel().getColumn(10).setMinWidth(0);
            tab.getColumnModel().getColumn(10).setMaxWidth(0);
     
     
            JScrollPane scrolltab=new JScrollPane(tab);
            scrolltab.setPreferredSize(new Dimension(250,200));
            gridbag.setConstraints(scrolltab, constraint);
            _schemepanel.add(scrolltab,BorderLayout.CENTER);
     
        }
    Je suppose que ca n'a pas l'air évident mais j'ais vraiment besoin d'aide alors n'hésitez pas. D'avance MERCI





    Voici un screen shot afin de vous aider a mieux comprendre mon problème. Désolé pour la qualité d'image

    J'ais vraiment cherché absolument partout et je n'ais rien trouvé (possible que j'ais mal cherché mais bon...) J'ais vraiment besoin d'aide la car je n'avance plus du tout...
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203

  3. #3
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Dans le lien que tu m'a passé, on parle de largeur de colonnes, mon problème c'est finalement l'épaisseur des entêtes de colonne. Sachant que je ne fais qu'un transfert d'une fenêtre a l'autre de ma table. Je ne change pas (pour l'instant) l'intitulé des colonnes.

    J'ais essayé avec JXTable comme précisé dans le lien que tu as posté mais JXTable n'éxiste visiblement pas.

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Il te faut la librairie de sinwglabs, que tu trouve sur le site.

    swingx.jar

  5. #5
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Je n'ais pas trouvé cette librairie... hormis un tuto en netbean...

  6. #6
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Sinon tu peux aussi passer à la version 6.0 de Java SE qui l'intègre maintenant en standard

    http://swinglabs.org/downloads.jsp

    Il suffisait de regarder sur la page de téléchargement sur le site de swinglabs

  7. #7
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    je ne parvient pas a telécharger. Les liens me renvoient vers une page not found.

    Il n'y a pas d'autres moyen que la JXTABLE??? J'aimerais savoir si quelqu'un a déjà eu une situation identique.... merci

    Le problème peut venir du GridbagConstraint??? quelqu'un pour m'aider svp...

  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
    à quoi est placé l'attribut fill de tes GrisBagConstraints, quelles sont les preferredSize de tes headers?

  9. #9
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Voici mon code

    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
        public void addDescribeTable(DataTableEntity table)
        {
            GridBagLayout gridbag=(GridBagLayout)_schemepanel.getLayout();
     
            //Création de contraintes pour le positionnement du GridBag
            GridBagConstraints constraint = new GridBagConstraints();
            constraint.fill = GridBagConstraints.HORIZONTAL;
            constraint.insets = new Insets (2,2,2,2);
            constraint.gridx = _controler.getTableCount()+1;
            constraint.gridy = 1;
            JTable tab=new JTable(table.getTableModel());
     
            //Mise en forme des colonnes
            tab.getColumnModel().getColumn(0).setPreferredWidth(10);
            //Enchainement des Set... pour rendre la colonne invisible
            tab.getColumnModel().getColumn(1).setPreferredWidth(0);
            tab.getColumnModel().getColumn(1).setMinWidth(0);
            tab.getColumnModel().getColumn(1).setMaxWidth(0);
            tab.getColumnModel().getColumn(2).setPreferredWidth(0);
            tab.getColumnModel().getColumn(2).setMinWidth(0);
            tab.getColumnModel().getColumn(2).setMaxWidth(0);
            tab.getColumnModel().getColumn(3).setPreferredWidth(0);
            tab.getColumnModel().getColumn(3).setMinWidth(0);
            tab.getColumnModel().getColumn(3).setMaxWidth(0);
            tab.getColumnModel().getColumn(4).setPreferredWidth(0);
            tab.getColumnModel().getColumn(4).setMinWidth(0);
            tab.getColumnModel().getColumn(4).setMaxWidth(0);
            tab.getColumnModel().getColumn(5).setPreferredWidth(150);
            tab.getColumnModel().getColumn(6).setPreferredWidth(0);
            tab.getColumnModel().getColumn(6).setMinWidth(0);
            tab.getColumnModel().getColumn(6).setMaxWidth(0);        
            tab.getColumnModel().getColumn(7).setPreferredWidth(0);
            tab.getColumnModel().getColumn(7).setMinWidth(0);
            tab.getColumnModel().getColumn(7).setMaxWidth(0);        
            tab.getColumnModel().getColumn(8).setPreferredWidth(0);
            tab.getColumnModel().getColumn(8).setMinWidth(0);
            tab.getColumnModel().getColumn(8).setMaxWidth(0);        
            tab.getColumnModel().getColumn(9).setPreferredWidth(0);
            tab.getColumnModel().getColumn(9).setMinWidth(0);
            tab.getColumnModel().getColumn(9).setMaxWidth(0);        
            tab.getColumnModel().getColumn(10).setPreferredWidth(0);
            tab.getColumnModel().getColumn(10).setMinWidth(0);
            tab.getColumnModel().getColumn(10).setMaxWidth(0);
     
            JScrollPane scrolltab=new JScrollPane(tab);
            scrolltab.setPreferredSize(new Dimension(200,250));
            gridbag.setConstraints(scrolltab, constraint);
            _schemepanel.add(scrolltab);        
    //        JTableHeader head = tab.getTableHeader();
    //        String nom = tab.getColumnName(5);
    //        System.out.print(head);
    //        System.out.print(nom);
        }

  10. #10
    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
    passe en fill BOTH au lieu de fill HORIZONTAL

  11. #11
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    C'est ce que j'ais fais ma ça n'a rien changé...

  12. #12
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Peut être que je suis passé à côté mais pourquoi ne définis-tu pas un JTableHeader pour gérer tes entêtes de colonnes ?

  13. #13
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Il est en commentaire sur mon code car c'est la première chose a laquelle j'avais pensé en fait mais ca n'a rien fais...

  14. #14
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Alors si tu as essayé et que ça n'a pas marché, cela vient certainement du GridBagLayout je pense.

  15. #15
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Je pense aussi que c'est lui qui met le bazard... mais comment faire alors... je suis obligé d'avoir le GridbagConstraint... pas de layout ni quoi que ce soit d'autre... je fais comment alors?

    Il faudrais essayer de le substituer avec quelquechose d'autre... quelqu'un a une idée?

    J'ais essayé de séparer le header et la table puis de les rafficher dans un JPanel... mais rien n'y fais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            JPanel panneau = new JPanel();
            panneau.setPreferredSize(new Dimension(200,250));
            gridbag.setConstraints(panneau, constraint);
            panneau.add(tab.getTableHeader(), BorderLayout.NORTH);
            panneau.add(tab, BorderLayout.CENTER);
            _schemepanel.add(panneau);
    Mes entetes de colonne sont toujour tassé... il sont visibles mais illisibles... J'aimerais savoir si quelqu'un a déjà eu un problème identique pour m'en parler et me dire comment il a fait pour le résoudre... Merci

    Je suis vraiment bloqué avec ce problème et j'aurais besoin que quelqu'un m'aide vraiment... SVP... Merci d'avance

    Es ce que le problème ne vient pas du fait que j'ais un GridBagConstraints? et si c'est le cas comment et par quoi puisje le modifier?

  16. #16
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    J'ai essayé de reproduire ton problème et je n'y suis pas arrivé.
    As-tu essayé de forcer le CellRenderer de ton tableHeader ? Ou de le redéfinir pour appeler setPreferredSize ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer());

  17. #17
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Oui j'ais essayé. Ca ne fais pas la meme chose... enfin presque... puisque les entetes de colonnes disparaissent presque... Mais merci quand meme

  18. #18
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    c'est vraiment dommage de pas pouvoir recuperer la JXTable.

    Il y a plusieurs methodes bien pratique :
    table.getColumnExt(1).setMaxWidth(100);
    table.getColumnExt(1).setMinWidth(50);



    si le lien de swinglabs est hs en voici un autre :
    http://parabuild.viewtier.com:8080/p...uildrunid=1177

  19. #19
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    getColumnExt n'est pas déclaré...

    La méthode getColumnExt(int) n'est pas définie pour le type DataTableEntity

  20. #20
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    mais si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    modele = new ProcessTableModel();
    table = new JXTable(modele);
    table.setRowHeight(22);
    table.setHorizontalScrollEnabled(false);
    table.setColumnControlVisible(true);
     
    table.getColumnExt(1).setMaxWidth(100);
    table.getColumnExt(1).setMinWidth(50);
    table.getColumnExt(2).setMaxWidth(100);
     
    jsp = new JScrollPane(table);
    add(BorderLayout.CENTER,jsp);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de taille avec une JTable
    Par Yann_69 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/07/2012, 11h10
  2. Problème de focus avec une JTable
    Par doudoujava dans le forum Composants
    Réponses: 0
    Dernier message: 20/05/2009, 10h52
  3. Problèmes avec une JTable
    Par Fab916 dans le forum Composants
    Réponses: 4
    Dernier message: 12/01/2006, 14h11
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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