Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JAVA SWING] Modifier un JPanel avec un bouton

    16 janvier 2020 à 12:30:01

    Bonjour,

    Je dispose d'une JFrame contenant 3 JPanel.

    Le premier est sur la partie gauche de l'écran et les deux autres sont disposés l'un sur l'autre sur la partie de droite.

    Le principe ici est que lors du clique sur le bouton Execute, les deux JPanel de droite changent.

    Ici qu'un seul des deux JPanel est traité :

    if (e.getSource() == executeButton) {
    //le JPanel modifié 
                panelCalculs=caracterData.getPanel();
    
    //ajout du JPanel modifié à la JFrame
                this.add(panelCalculs);
    
    //refresh de la JFrame
                this.revalidate();
                this.repaint(); 
                
    }

    Le problème rencontré est que ce code ne modifie pas le JPanel,

    le seul moyen trouvé est de supprimer tout le contenu de la JFrame et de reconstruire toute la JFrame, un simple refresh ne fonctionne pas

    Je me demandais donc si il n'existait pas un autre moyen de refresh quand on dispose de plusieurs JPanel dans une même JFrame

    Merci de votre aide !

    -
    Edité par MathieuDubayle1 16 janvier 2020 à 12:30:56

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2020 à 15:48:39

      La vraie question est de savoir quel LayoutManager tu utilises dans le JFrame. La solution que tu recherches peut beaucoup varier en fonction de cette réponse !

      À côté de ça, si tu veux remplacer dynamiquement un JPanel par un autre, tu peux être intéressé par CardLayout.

      • Partager sur Facebook
      • Partager sur Twitter
        16 janvier 2020 à 16:51:29

        Zachee54 a écrit:

        À côté de ça, si tu veux remplacer dynamiquement un JPanel par un autre, tu peux être intéressé par CardLayout.


        Suivant le cours, c'est le meilleur Layout pour son problème d'après moi 🤘
        • Partager sur Facebook
        • Partager sur Twitter
          16 janvier 2020 à 18:34:20

          Merci de vos réponses, on a décidé de reconstruire toute la JFrame, mais le problème venait peut être du fait que on utilisait le repaint et le revalidate dans l'action listener par this. alors qu'il aurait fallu récupérer cette JFrame par un accesseur et ensuite appeler les fonctions de refresh, à tester :)
          • Partager sur Facebook
          • Partager sur Twitter
            17 janvier 2020 à 9:30:57

            Si this fait référence au JFrame ou à un autre ancêtre de ton JPanel, c'est bon.

            Franchement, je crois que tu fais fausse route en cherchant le problème du côté du refresh.
            Commence par nous dire comment tu agences tes composants dans le JFrame, et après on en reparle.

            • Partager sur Facebook
            • Partager sur Twitter

            [JAVA SWING] Modifier un JPanel avec un bouton

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown