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 :

Fusion de cellules pour une JTABLE


Sujet :

Composants Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Fusion de cellules pour une JTABLE
    J'ai un Gros probleme avec les jtables, si quelq'un à la soluce SVP!
    J'aimerais fusionner 2 cellules de 2 lignes Différentes d'un JTABLE pour en quelque sorte faire un tableau a double entree!
    Pourrai t'on éclairer ma lanterne!
    un ptit exemple ou n'importe quoi svp!

  2. #2
    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

  3. #3
    En attente de confirmation mail
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci mec sympa sympa! tu me sauve la vie ! lol

  4. #4
    En attente de confirmation mail
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Euh le resultat que je veuxment sa, obtenir c'est exactement sa, mais le probleme c'estqu certain des exemple ne fonctionne pas cela me met des erreur!

    Par exemple l'exemble de
    Multiple Row Header (7)
    Me met des erreur au lancement!comme sa :

    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)

  5. #5
    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
    Dans les sources retire l'appel à setDatavector à la ligne 55

  6. #6
    En attente de confirmation mail
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Heu désolé d'etre le boulet de service mais sa veut toujours pas pour l'exemple
    numero 7 Multiple Row Header.

    Sans rien faire sa me met l'erreur :
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)
    at multiple_Row_Header.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:55)
    at javax.swing.table.DefaultTableModel.setColumnIdentifiers(DefaultTableModel.java:458)


    Sinon en mettant toute la methode setDataVector en commentaire cela me met cette erreur :


    Exception in thread "main" java.lang.NullPointerException
    at multiple_Row_Header.MultipleRowHeaderExample.<init>(MultipleRowHeaderExample.java:57)
    at multiple_Row_Header.MultipleRowHeaderExample.main(MultipleRowHeaderExample.java:79)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 47
    Points
    47
    Par défaut
    Quelqu'un a t il résolu les erreurs citées ??

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Points : 63
    Points
    63
    Par défaut
    Moi aussi... avec une Java 5.0

    Quelqu'un a-t-il un exemple pour fusionner deux en-têtes de celulles dans un JTable ?

    Merci,
    F.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Je reprends le topic un an après le dernier post mais j'avais également besoin de pouvoir fusionner des cellules dans des tableaux.
    J'ai passé pas mal de temps à chercher des solutions mais la seule solution est à priori celle donnée dans les exemples du lien :
    http://www.crionics.com/products/ope...Examples4.html

    Le souci est que le code date de 98 et que ca ne compile plus avec les nouveaux SDK.
    Après moult recherches, j'ai fini par trouver l'explication des erreurs et la solution pour tout faire fonctionner correctement :
    http://forums.sun.com/thread.jspa?fo...hreadID=262659

    Le problème venait à priori de la version du JDK qui dans les nouvelles versions ne supportent plus setColumnIdentifiers.

    Voila, je ne sais pas si ca servira à d'autres mais moi j'ai galéré dessus.

  10. #10
    Membre actif Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Points : 273
    Points
    273
    Par défaut spantable
    Je suis en 1.4 et j'ai suivi l'exemple du lien :
    https://svn.chelys.de/.../spantable/

    Ca fonctionne bien, assez facile à comprendre, à part une petite erreur, dans la classe CTUI, remplacer un table.getRowCount() par un table.getColumnCount().

    _____________

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Après avoir laissé mon code un peu plus d'un an de côté, je m'y suis remis.

    Je ne sais pas si certains seront intéressés mais j'ai apporté quelques petites modifications à des fonctions comme celle pour ajouter une ligne au tableau.

    Par exemple, elle ne fonctionnait pas correctement dans ces cas d'utilisation :
    - Problème à l'ajout d'une première ligne dans le cas d'un tableau initialisé à vide
    - Disparition des couleurs et fusions de cellules à chaque nouvelle ajout de ligne.
    Idem pour ce qui est des fonctions d'insertion et ajout de colonne.

    Je vous propose donc une première version qui sera éventuellement à modifier, compléter et faire évoluer :

    Dans DefaultCellAttribute.java :

    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
     
    @Override
        public void addColumn() {
            int[][][] oldSpan = span;
            Color[][] oldBackground = background;
            Color[][] oldForeground = foreground;
            int numRows = oldSpan.length;
            int numColumns = oldSpan[0].length;
     
            setSize(new Dimension(numColumns + 1, numRows));
     
            for (int i = 0; i < numRows; i++) {
                System.arraycopy(oldSpan[i], 0, span[i], 0, numColumns);
                System.arraycopy(oldBackground[i], 0, background[i], 0, numColumns);
                System.arraycopy(oldForeground[i], 0, foreground[i], 0, numColumns);
     
                span[i][numColumns][CellSpan.COLUMN] = 1;
                span[i][numColumns][CellSpan.ROW] = 1;
            }
        }
    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
     
    @Override
        public void addRow() {
            int[][][] oldSpan = span;
            Color[][] oldBackground = background;
            Color[][] oldForeground = foreground;
            int numRows = oldSpan.length;
     
            setSize(new Dimension(columnSize, numRows + 1));
     
            System.arraycopy(oldSpan, 0, span, 0, numRows);
            System.arraycopy(oldBackground, 0, background, 0, numRows);
            System.arraycopy(oldForeground, 0, foreground, 0, numRows);
     
            for (int i = 0; i < columnSize; i++) {
                span[numRows][i][CellSpan.COLUMN] = 1;
                span[numRows][i][CellSpan.ROW] = 1;
            }
        }
    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
    @Override
        public void insertRow(int row) {
            int[][][] oldSpan = span;
            Color[][] oldBackground = background;
            Color[][] oldForeground = foreground;
            int numRows = oldSpan.length;
     
            setSize(new Dimension(columnSize, numRows + 1));
     
            if (row > 0) {
                System.arraycopy(oldSpan, 0, span, 0, row);
                System.arraycopy(oldBackground, 0, background, 0, row);
                System.arraycopy(oldForeground, 0, foreground, 0, row);
            }
            System.arraycopy(oldSpan, row, span, row + 1, numRows - row);
            System.arraycopy(oldBackground, row, background, row + 1, numRows - row);
            System.arraycopy(oldForeground, row, foreground, row + 1, numRows - row);
            for (int i = 0; i < columnSize; i++) {
                span[row][i][CellSpan.COLUMN] = 1;
                span[row][i][CellSpan.ROW] = 1;
            }
        }
    Je vous laisse comparer avec le code original pour voir mes modifications, rien de bien compliqué mais ça prend un peu de temps pour tout comprendre.

    En tout cas, je ne sais pas si il existe d'autres possibilités de faire de la fusion de cellule dans un JTable mais pour moi ce code reste bien pratique et une bonne base à faire évoluer. Je posterai au fur et à mesure mes quelques petites modifications qui j'espère serviront à d'autres personnes.

Discussions similaires

  1. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  2. [SWING] Comment formater une cellule d' une JTable ?
    Par Hamdi Hedhili dans le forum Composants
    Réponses: 6
    Dernier message: 23/12/2008, 14h59
  3. problème de couleur de cellule dans une JTable
    Par rprom1 dans le forum Composants
    Réponses: 3
    Dernier message: 04/04/2007, 00h01
  4. Surligner des cellules d'une JTable
    Par bfb dans le forum Composants
    Réponses: 1
    Dernier message: 06/01/2006, 18h53
  5. [JTable] Saut de ligne dans la cellule d'une JTable
    Par enocet dans le forum Composants
    Réponses: 3
    Dernier message: 15/12/2005, 13h16

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