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 :

[Debutant][JTable] Dimensionement des colones, et autre soucis.


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut [Debutant][JTable] Dimensionement des colones, et autre soucis.
    Bonjour, voila devant effectuer des changement sur une base de données, je me suis naturelement tourné vers une Jtable.
    Aprèys une après midi passé a parcourir divers forum, google et autre notice made in sun, j'ai compris plusieurs chose, mais je n'arrive pas a les implementer (oui en fait je n'ai rien compris).
    Tout d'abord, je créée ma table de la manière suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TableModel tableModaliteModel = new DefaultTableModel(
                                        new String[][] {},
                                        new String[] { "Type", "Rang", "Code", "Intitulé modalité", "Nombre" });
     
    tableModalite=new JTable();
                                    panelModalite.setViewportView(tableModalite);
                                    tableModalite.setModel(tableModaliteModel);
    Puis pour mes redimensionements ou changement particuliers je fais ceci

    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
     
    TableColumn colone;
                                    TableColumn coloneTypeModalite = tableModalite.getColumnModel().getColumn(0);
                                    JComboBox jcb = new JComboBox();
                                    jcb.addItem("E");
                                    jcb.addItem("M");
                                    jcb.addItem("U");
                                    coloneTypeModalite.setCellEditor(new DefaultCellEditor(jcb));
     
     
                                    colone=tableModalite.getColumnModel().getColumn(0);
                                    colone.setWidth(panelModalite.getWidth()*14/100);
                                    colone=tableModalite.getColumnModel().getColumn(1);
                                    colone.setWidth(panelModalite.getWidth()*14/100);
                                    colone=tableModalite.getColumnModel().getColumn(2);
                                    colone.setWidth(panelModalite.getWidth()*25/100);
                                    colone=tableModalite.getColumnModel().getColumn(3);
                                    colone.setWidth(panelModalite.getWidth()*33/100);
                                    colone=tableModalite.getColumnModel().getColumn(4);
                                    colone.setWidth(panelModalite.getWidth()*14/100);
    Autant ca marche pour le ComboBox, autant pour le redimensionement non.

    J'aurais également voulu savoir, au niveau algorythme et propreté.
    Si on effectue un changement dans ma table, il faut que cela se répercute dans ma bd. Est ce que la possibilité suivante marcherait :
    Je crée un KeyListener sur tout ma table, et à chaque fois qu'on appuie sur la touche entré alors qu'on a une cellule de selectionnée cela envoit la requete au niveau de la BD. Ou ya il plus propre ?

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    le meilleur moyen de réagir aux changement de données dans la JTable est d'ajouter un TableModelListener au TableModel.
    Concernant le redimensionnement, il faut appeler setPreferredWidth plutôt que setWidth.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    J'ai essayé avec les deux, setPreferredWidth et setWidth, mais aucun des deux ne change ma taille. J'ai inclue mon Jtable dans un JscrollPane, lui inclue dans le centre d'un borderLayout.
    Sinn merci pour l'evenement, je vais voir de ce coté là.

  4. #4
    Membre éclairé Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Par défaut
    Ce code marche très bien chez moi:
    table étant ma JTable possédant 5 colonnes. Ici je ne redimensionne que la première.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     TableColumn column = null;
    for (int j = 0; j < 5; j++) {
        column = table.getColumnModel().getColumn(j);
     
        if (j == 0)
          column.setPreferredWidth(350);
     
        else
          column.setPreferredWidth(50);
    }

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Ah, oui. En fait, lorsque tu appelles setPreferredSize, panelModalite n'a pas encore été affiché ni "layouté". Sa taille n'a pas encore été calculée et vaut 0x0.

    Pour faire ce que tu cherches, tu peux rentrer les coordonnées en dur (14, 14, 25, ...), et appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableModalite.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    Ce qui d'après la javadoc devrait respecter les tailles relatives des colonnes lorsque la JTable est redimensionnée.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Merci bien c'était bien ca. Je me suis arrangé en utilisant la taille de ma frame général ce qui convient à ce que je recherche.
    Merci beaucoup ^^

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

Discussions similaires

  1. [JTable] coloration des lignes d'une JTable
    Par MathiasM dans le forum Composants
    Réponses: 3
    Dernier message: 22/06/2009, 10h19
  2. Réponses: 9
    Dernier message: 24/05/2006, 08h55
  3. [JTable] Tri des colonnes
    Par djskyz dans le forum Composants
    Réponses: 10
    Dernier message: 17/03/2005, 10h14
  4. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30
  5. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28

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