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 :

Mise à jour d'un Jtable (problème complexe)


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut Mise à jour d'un Jtable (problème complexe)
    Bonjour,

    J'ai un problème assez compliqué tant à résoudre, qu'à expliqué, je vais donc essayer d'être le plus clair possible (et merci d'avance à ceux qui auront lu et essayer de comprendre ).

    J'ai une JFrame MainFrame divisée en deux par un JSplitPane, donnant ainsi deux panels : PanelNavigation et ActionPanel.
    PanelNavigation est composé de boutons permettant de naviguer dans l'application. En cliquant sur un des boutons, cela appelle une méthode qui met à jour ActionPanel.
    PanelNavigation est aussi composé d'un autre panel, placé entre les boutons, jPanelTableau contenant 2 tableaux. Ce sont ces deux tableaux qui me posent problème.
    En effet, les données à afficher dans ces tableaux ne peuvent être obtenu qu'après avoir obtenu une variable, que l'utilisateur sélectionne
    dans un certain écran de l'application (ne quittez pas, un exemple suit! ).

    Pour mieux comprendre le raisonnement voilà un petit exemple :
    Imaginons que l'application permette de gérer un garage. A droite de l'application se trouve donc le PanelNavigation avec les boutons Clients, Réparations, Constructeur, Salariés etc etc. En cliquant sur le bouton Réparation, l'ActionPanel se met à jour avec un panel composé de boutons. A chaque boutons correspond une année travaillée (2007/2008;2008/2009;2009/2010 etc etc). C'est en cliquant sur un de ces boutons que la variable nécessaire (l'année donc) à la récupération des données pour les tableaux, est récupérée. Ce n'est donc qu'à ce moment que l'on peut remplir et afficher les tableaux dans PanelNavigation. Et c'est donc la mon soucis.

    Pour faire cela j'ai essayé en faisant ainsi :
    .J'ai déclaré et ajouté mon jPanelTableau (variable static) dans PanelNavigation (donc dés le lancement de l'application). Il est donc vide au ancement de l'application.
    .Je l'ai rendus non visible.
    .Dans PanelNavigation J'ai créé une méthode static nommée initJTableau donc voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void initJTableau(JPanel panelTableau){
    	jPanelTableau= panelTableau;
    	jPanelTableau.setVisible(true);
    }
    .J'ai créé une classe JPanelTableauxDonnees contenant les deux tableaux, et demandant en paramètre une année (choisi donc par l'utilisateur).
    Le constructeur de cette classe permet dans un premier temps d'initialiser les tableaux et dans un second temps fait appel à la fonction initJTableau de la classe PanelNavigation (décrite juste au dessus).
    .Enfin, dans l'actionListener des boutons contenant les années (permettant de sélectionner les données à afficher dans les tableaux), je créé une nouvelle instance de JPanelTableuxDonnees.

    Mon problème est que je n'arrive pas à mettre à jour mon PanelNavigation(impossible d'appeler les méthodes repaint(), revalidate()... dans la méthode initJTableau qui est une méthode static).

    J'aimerais donc savoir si mon raisonnement est bon, et si oui ou même non, comment puis je parvenir à mes fins.

    Encore une fois un merci à ceux qui auront lu ce topic jusqu'au bout et un énorme merci à ceux qui essaieront de m'aider

    Bonne journée.

  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
    Tu dois utiliser la technique des listener. L'instance du listener doit avoir accès à l'objet à mettre à jour. Lors d'une action quelconque (sur un bouton par exemple), il faut appeler une méthode sur ce listener.
    Ensuite, il y a deux choix possible : soit le listener a accès aux données et les transmet à l'objet qui doit être mis à jour, soit c'est l'objet à mettre à jour qui sait comment récupérer ses données.
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Peut être sous l'effet de la motivation du lundi matin, j'ai quasiment réussi à résoudre mon problème : les données sont bien récupérés mais l'affichage laisse à désirer.
    Mon PanelNavigation étant composé d'une liste de boutons et d'un petit logo en dessous, je lui est définit comme Layout un BorderLayout(). Au centre je lui ajoute un JPanel JPanelBoutons contenant donc tous les boutons, et au SUD un autre JPanel contenant juste le logo.
    JPanelBoutons a pour Layout GridLayout. Le problème avec ce Layout est que chaque composant qui compose le panel occupe la même place, ce qui fait que lorsque j'affiche mon tableau, la place qu'il occupe est trop petite pour tout afficher convenablement.

    Deuxième question donc : a votre avis, quel est le layout le plus approprié pour mon cas (possibilité, d'ajouter un panel sous un bouton, sans redimensionner tous les boutons).
    Merci

    PS : merci pour ton courage dinobogan

  4. #4
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    pourquoi utilises-tu un static ?

  5. #5
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    met un screen.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Alors pour le coup le static ne sert plus à rien maintenant.

    Sinon voilà un petit schéma pour illustrer le tout :


  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Bon j'avance petit à petit. Je passe donc par un boxLayout maintenant pour mon PanelNavigation, et je place tous mes boutons dans une Box. Le problème est que la longueur des boutons change en fonction du label du bouton, ce qui fait que les boutons ne sont pas tous de la même taille.
    J'ai essayé de faire un setMinimumSize avec la taille de PanelNavigation mais minimumSize, maximumSize, preferredSize et Size tout court me retourne 0

    Une idée du problème?

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

Discussions similaires

  1. Problème de mise à jour sur ma JTable
    Par sam14 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/03/2012, 13h08
  2. Mise à jour d'une JTable (Problème d'affichage)
    Par ouchemhou dans le forum Composants
    Réponses: 29
    Dernier message: 14/08/2008, 13h33
  3. Mise à jour d'une JTable en fonction d'une JList
    Par xtaZy dans le forum Composants
    Réponses: 1
    Dernier message: 21/03/2007, 18h25
  4. Mise à jour dynamique de JTable
    Par Virgile le chat dans le forum Composants
    Réponses: 1
    Dernier message: 03/12/2006, 12h38
  5. mise à jour d'une JTable ?
    Par Sakalam dans le forum Composants
    Réponses: 11
    Dernier message: 15/09/2006, 15h06

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