Bonjour, j'ai actuellement un projet avec mon école, et pour la fenetre de crédits de notre jeu, nous aimerions pouvoir mettre une scrollbar.

Mais elle ne s'affiche pas car apparemment "I'm adding a component's parent to itself". Sauf que je ne vois pas l'erreur du tout, et j'ai regardé sur quelques tutos pour voir comment il fallait faire, mais rien ne m'a vraiment aidé. Je vous écris tout le code de la classe: (panneaufond étant uen classe héritée de JPanel)

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import javax.swing.*;
 
import java.awt.*;
import java.awt.event.*;
 
 
///nos packages
import panneaux.*;
import Photos.*;
 
 
public class FenetreCredit extends JFrame {
        private GridBagLayout gridBag =new GridBagLayout();
        private JButton retour;
        private JLabel TexteHadrien;
        private JLabel TexteNoemie;
        private JLabel TexteEtienne;
        private JLabel TexteMaxime;
        private PanneauFond p = new PanneauFond();
        private JScrollPane scroll;
 
    public FenetreCredit (){
        super("FenetreCredit");
    ///Différent Panneaux et Frame Utiles:
        AffichePhotoNoemie Nono= new AffichePhotoNoemie();
        AffichePhotoEtienne Titi = new AffichePhotoEtienne();
        AffichePhotoMaxime Max= new AffichePhotoMaxime();
        AffichePhotoHadrien Hadri=new AffichePhotoHadrien();
 
        p.setLayout(new GridBagLayout());
        setLayout(gridBag);
    ///Déclaration et Spécificité des GridBagLayout
        GridBagConstraints Texte = new GridBagConstraints();
        GridBagConstraints Noemie = new GridBagConstraints();
        GridBagConstraints Etienne = new GridBagConstraints();
        GridBagConstraints Maxime =new GridBagConstraints();
        GridBagConstraints Hadrien = new GridBagConstraints();
        GridBagConstraints TxtNoemie = new GridBagConstraints();
        GridBagConstraints TxtEtienne = new GridBagConstraints();
        GridBagConstraints TxtMaxime =new GridBagConstraints();
        GridBagConstraints TxtHadrien = new GridBagConstraints();
        GridBagConstraints retour = new GridBagConstraints();
        GridBagConstraints Scroll = new GridBagConstraints();
 
 
        Texte.gridx=1;
        Noemie.gridx=0;
        Etienne.gridx=0;
        Maxime.gridx=0;
        Hadrien.gridx=0;
        TxtNoemie.gridx=1;
        TxtEtienne.gridx=1;
        TxtMaxime.gridx=1;
        TxtHadrien.gridx=1;
        retour.gridx=1;
 
 
        Noemie.ipadx=100;//Dimensionnement des "cases" accueillant les photos, le gridBagLayout divisant la fenetre en cases:
        Noemie.ipady=150;
        Etienne.ipadx=100;
        Etienne.ipady=150;
        Maxime.ipadx=100;
        Maxime.ipady=150;
        Hadrien.ipadx=100;
        Hadrien.ipady=150;
        TxtHadrien.ipadx=250;
        TxtNoemie.ipadx=250;
        TxtEtienne.ipadx=250;
        TxtMaxime.ipadx=250;
        Texte.ipadx=250;
 
        Texte.insets=new Insets (10,50,10,0);
        Noemie.insets=new Insets (10,0,10,0);
        Etienne.insets=new Insets (10,0,10,0);
        Maxime.insets=new Insets (10,0,10,0);
        Hadrien.insets=new Insets (10,0,10,0);
        retour.insets=new Insets (10,0,10,0);
 
 
    //Création des éléments de la fenetre
        JLabel txt = new JLabel ("<html>Le Tangram est un jeu solitaire, plus précisément un casse-tête chinois.<br>Le but de ce puzzle est de juxtaposer différentes pièces afin de reproduire une forme donnée comme: <br> une forme d'animal, un personnage, ou tout simplement une forme artistique.<br>Historiquement, la légende dit qu'un empereur chinois du XVIe siècle du nom de «Tan», fit tomber un carreau de faïence qui se brisa en 7 morceaux.<br> Il n'arriva jamais à  rassembler les morceaux pour reconstituer le carreau<br> mais l'homme s'aperçut qu'avec les 7 pièces,<br> il était possible de créer quantités de formes multiples, d'où l origine du jeu de Tangram.<br>L'application présentée ici a pour but de vous divertir et de développer votre créativité et votre logique.<br>Bon jeu!");
 
 
        JLabel TexteHadrien=new JLabel("<html>Si notre application est aussi stylée, c'est grâce à Hadrien, le designer de l'application.<br> Il a créé toutes les fenêtres du jeu Tangram.<br> Il est également à l'origine de la gestion des scores."); 
        JLabel TexteNoemie= new JLabel("<html>Noémie est la chef de projet.<br> Elle coordonne le groupe pour, par exemple, terminer le projet dans les temps.<br> Elle est également la développeuse de ce site. Même si le langage Java n'est pas son point fort,<br> elle a tout de même codé quelques lignes de l'application: <br>les indices et l'enregistrement des scores ont été codé par elle.");
        JLabel TexteEtienne= new JLabel("<html>Si vous pouvez déplacer et faire tourner les formes, c'est grâce à Etienne!<br> Avec Maxime, il a créé les sept formes qui permettent de réaliser les figures du Tangram.<br> Il a également codé les méthodes qui permettent de déplacer, tourner les pièces... <br>Si vous avez la chance de pouvoir jouer en mode chrono, c'est aussi grâce à lui.");
        JLabel TexteMaxime= new JLabel("<html>Maxime c'est le pro de la base de données.<br> C'est grâce à lui que l'application propose des figures aussi variées.<br> Il a aussi travaillé avec Etienne pour la cration des sept formes de base,<br> et pour le mode chronomètre.");
        JButton Retour = new JButton ("Retour");
 
 
    //Listener pour le bouton Reprendre
 
        Retour.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent e){
                //new Son("sons/EXPLOSION.WAV");            
                new FenetreMenu();
                dispose();    //Pour fermer la fenetre avant de passer à la suivante
            }
        });
 
    //Ajout au panel:
        setContentPane(Nono); //Ajout de la photo de Noemie au panneau AfficheNoemie
        setContentPane(Titi);
        setContentPane(Max);
        setContentPane(Hadri);
        //p.add(txt,Texte);
        p.add(Nono,Noemie);
        p.add(TexteNoemie, TxtNoemie);
        p.add(TexteEtienne, TxtEtienne);
        p.add(TexteMaxime, TxtMaxime);
        p.add(Titi,Etienne);
        p.add(TexteHadrien, TxtHadrien);
        p.add(Max,Maxime);
        p.add(Hadri,Hadrien);
        p.add(Retour, retour);
 
        scroll = new JScrollPane(p);
        getContentPane().add(scroll,Scroll);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(1200,700);
        setContentPane(p);
        setResizable(false);
        setVisible (true);
 
 
 
    }
    public static void main(String[] a) {
        new FenetreCredit();
    }
 
 
}
Si par hasard vous aviez une idée de que ce nous devrions faire, je vous en serais très reconnaissant !