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 Largeur de colonne + retour à la ligne


Sujet :

Composants Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut JTable Largeur de colonne + retour à la ligne
    Salut

    J'ai deux question concernant les JTable

    - Est-il possible de définir la largeur de mes colonnes (en px ou autre) ?

    - Si un texte contenu dans une cellule est trop long, peut-on le forcer à revenir à la ligne ?


    a++

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut
    Largeur de colonnes :
    Par défaut, les colonnes des JTables ont toutes la même largeur. Pour changer cela, il te faudra dans un premier temps désactiver le retaillage automatique des colonnes. Puis, dans un second temps, tu pourras changer la largeur de chacune de tes colonnes.

    Voilà un exemple où la 1ère colonne de la table prendra une largeur de 100 pixels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        int rows = 3;
        int cols = 3;
        JTable table = new JTable(rows, cols);
     
        // Disable auto resizing
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
     
        // Set the first visible column to 100 pixels wide
        int vColIndex = 0;
        TableColumn col = table.getColumnModel().getColumn(vColIndex);
        int width = 100;
        col.setPreferredWidth(width);
    Cellule avec contenu trop long :
    Si dans ta table les cellules sont en consultation (donc non éditable), tu devras redéfinir le renderer des cellules pour lesquelles tu souhaites avoir un contenu long. (si elles sont aussi editables, tu devras redéfinir un CellEditor adéquate) Pour ton renderer, il devra hériter de JTextArea de façon à pouvoir s'afficher sur plusieurs lignes. (cf : http://www.developpez.net/forums/viewtopic.php?t=449009 ) Par contre, il te faudra aussi changer la hauteur des lignes de la JTable (donc des cellules qui contiennent ton propre renderer).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.setRowHeight(60)
    La hauteur des cellules d'une JTable est fixée pour toutes les lignes. Donc le contenu de chacune de tes cellules sera forcément limité.
    "Un clavier AZERTY en vaut deux."
    http://www.stateofmind.fr (Java, Maven2, Swing, Design Patterns, ...)

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 201
    Points : 179
    Points
    179
    Par défaut
    Citation Envoyé par Oliveuh
    La hauteur des cellules d'une JTable est fixée pour toutes les lignes. Donc le contenu de chacune de tes cellules sera forcément limité.
    Regarde dans mon topic précédent et tu vera que j'ai fait une méthode qui permet de donner une hauteur spécifique à chaque ligne.
    tu as 2 possibilités pour la méthode setRowHeight() :
    setRowHeight(int row, int height)
    setRowHeight(int height)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Ca à l'air d'aller.

    Est-ce qu'il est possible de définir la largeur d'une (plusieures) colonne(s) et que toutes celles qui n'ont pas de largeur définie occupe l'espace restant ?

    EDIT : Problème : est-ce qu'il est normal que je ne puisse plus sélectionner les lignes de mon tableau si j'utilise mon CellRender ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    J'ai essayé de faire un table.setRowSelectionAllowed(true); Mais ça ne va pas mieux.

  6. #6
    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
    Elle sont probablement selectionnees mais la cellule n'est pas peinte de maniere a indiquer la selection. Il te faut modifier ton CellRenderer personalise pour prendre en compte cet etat (en faisant varier la couleur de fond du JTextArea par exemple).
    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

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Ah ben oui, quel c.. je suis ! J'ai bêtement repris une partie de l'exemple de theyankee76, mais seulement la partie en rapport avec les retours à la ligne.

    Bon ça repousse le problème un peu plus loin. J'utilise la librairie JGoodies Looks et c'est elle qui définissait les couleurs. Si j'utilise un seul thème, pas de problème. Mais si j'en utilise plusieurs ça risque de poser des problème. Je vais essayer de voir s'il y a moyen de récupérer les couleurs du thème actuellement utilisé et de l'appliquer dans mon cellRender.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Pour ceux que ça intéresserait, pour utiliser les couleurs des thème JGoodies (ou autre) il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (isSelected) {
        super.setForeground(table.getSelectionForeground());
        super.setBackground(table.getSelectionBackground());
    } else {
        super.setForeground(table.getForeground());
        super.setBackground(table.getBackground());
    }

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

Discussions similaires

  1. JTable. largeur des colonnes apres MAJ de la table
    Par step31 dans le forum Composants
    Réponses: 4
    Dernier message: 17/09/2008, 18h57
  2. [JTable] Largeur des colonnes
    Par opensource dans le forum Composants
    Réponses: 2
    Dernier message: 08/02/2008, 10h39
  3. [JTable] largeur de colonne differente selon la ligne
    Par Bideul dans le forum Composants
    Réponses: 5
    Dernier message: 30/11/2006, 11h53
  4. [JTable] Largeur de colonne
    Par BainE dans le forum Composants
    Réponses: 4
    Dernier message: 22/11/2006, 18h44
  5. [C#] Largeur de colonne et de ligne dans un DataGrid
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/08/2004, 14h09

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