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 :

Insertion d'une JTable dans une JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par défaut Insertion d'une JTable dans une JTable
    Bonjour à tous,

    Voilà je n'ai JAMAIS fait de JTable auparavant, et en lisant ce tuto, j'ai cru comprendre qu'il était possible d'insérer une JTable dans une JTable.

    De ce fait j'ai essayé d'en créer une avec 2 colonnes et dans chacune des colonnes j'insère une JTable de 30x30.

    Ca compile sans problème sauf que lorsque je démarre mon appli, dans lest cellules où devraient se trouver ma JTable se trouve un mesage d'erreur :

    javax.swing.JTable[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=122,g=138,b=153],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],showHorizontalLines=true,showVerticalLines=true]

    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
     
    // Initialise le nom des colonnes
            initNomColonnes(); // Initialise des attributs privés de ma classe de type String []
     
            // Déclaration et initialisation des composants SWING
            JPanel panelPrincipal = new JPanel();
     
            Object[][] data = new Object[30][4];
            Object[][] data2 = new Object[30][30];
            JTable tableDroite = new JTable(1,2);
     
            JTable tableGauche = new JTable(data, nomColonnesGauche);
            // nomColonnesXXXX sont les attributs privés de ma classe
            JTable tableAT = new JTable(data2, nomColonnesAT);
            JTable tableECH = new JTable(data2, nomColonnesECH);
     
            tableDroite.setValueAt(tableAT, 0, 0);
            tableDroite.setValueAt(tableECH, 0, 1);
     
            // Ajout des composants SWING et des Layouts aux différents conteneurs
            this.setLayout(new FlowLayout());
            panelPrincipal.setLayout(new FlowLayout());
            JScrollPane panelGauche = new JScrollPane(tableGauche);
            JScrollPane panelDroite = new JScrollPane(tableDroite);
            panelPrincipal.add(panelGauche);
            panelPrincipal.add(panelDroite);
            this.add(panelPrincipal);
    Merci beaucoup d'avance !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ce n'est pas un message d'erreur. C'est la valeur renvoyée par la méthode "toString" de la JTable.
    Comme tu utilises le renderer par défaut, c'est l'affichage sous forme de String qui est fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Une JTable en tant que Renderer/Editor est une belle saloperie niveau gestion du focus, des updates et ainsi de suite.


    Que cherches tu à faire par une telle inclusion?

    Mais bon c'est faisable...

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par défaut
    En fait je cherchais à faire quelque chose d'assez difficile (j'ai mis une image en fichier attaché).

    Sur l'image je souhaite que seule la partie de droite soit scrollable horizontalement et la partie de gauche ET droite doivent se scroller ensemble verticalement.

    Assez difficile en fait...

    Sachant que la partie de droite en fait se décompose en 2 parties de 30 colonnes que par un bouton au dessus je pourrais cacher indépendamment.

    Si des gens ont des idées...
    Images attachées Images attachées  

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Mouaip.

    En fait la technique standard est d'avoir deux Jtable, une pour les colonnes fixes, une pour les colonne flottantes.
    La JTable pour les colonnes fixes doit être installée dans le rowHeader du JScrollPane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monScrollPane.setRowHeaderView(maTableFixe);
    .
    Si tu veux avoir le header de ta JTable fixe, il faut également installer le TableHeader de ta JTable dans le coin supérieur gauche du JScrollPane.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monScrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,maTableFixe.getTableHeader());
    la JTable flottante doit être installée de façon normale dans le JScrollPane.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par défaut
    Ok... Mais il reste le souci du scroll vertical simultané des 2 JTables...
    Comment faire ?

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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