JScrollPane qui fait disparaître les autres JPanel

Résolu
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 6 juin 2012 à 09:10
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 8 juin 2012 à 08:50
Bonjour,

j'ai créé une interface graphique avec quelque JPanel et des composant à l'intérieur. Je n'ai pas utilisé de layout.
J'ai donc pu disposer tout mes composants comme je le voulais.

Mon problème est que j'ai voulu ajouter un JScrollPane et depuis, plus rien ne s'affiche.

JScrollPane scrollPaneGeneral = new JScrollPane(panelFond);
this.getContentPane().add(scrollPaneGeneral);


Je ne comprend pas pourquoi.
Avez-vous une idée ?

Merci.
Bonne journée.

15 réponses

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
8 juin 2012 à 08:50
Je ne sais pas pourquoi ça ne marche pas. J'ai recommencé mon interface en utilisant des layout différents (GridLayout, BorderLayout, SpringLayout).
Et j'ai bien mes barres de défilement quand je rétrécis la fenêtre.

Merci pour tes réponses.
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 09:40
Salut,

Si j'ai bien compris, tu as mis le layout de ta fenetre à null... this.setLayout(null); ou quelque chose comme ça...
si tu ne donnes pas d'information de positionnement pour ton JScrollPane, il est logique qu'il ne l'affiche pas...
et si toute ta précédente interface se retrouve maintenant dans ton JScrollPane, si ce dernier ne s'affiche pas, alors il est logique que son contenu ne s'affiche pas...

mais simplement un layout à ta JFrame, et cela devrait aller...
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 09:51
Merci pour la réponse.

Je n'y avais pas pensé. J'avais mis le setBounds sur le JPanel.
J'ai de nouveau mes JPanel qui s'affiche mais je n'ai pas les barres de défilement du JScrollPane même si je réduit la fenêtre :

JScrollPane scrollPaneGeneral = new JScrollPane(panelFond);
scrollPaneGeneral.setBounds(0, 0, 1200, 700);
this.getContentPane().add(scrollPaneGeneral);
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 09:59
si je comprends bien tu as "juste" une fenetre de 1200*700 qui contient ton JScrollPane qui lui-même contient tous tes composants...

Comme je suppute que cela vienne des ton absence de layout, je te propose ceci...

this.getContentPane().setLayout(new BorderLayout()); // mets un layout à la fenetre
this.setSize(1200, 700); //mets la taille de la fenetre à 1200*700
this.getContentPane().add(scrollPaneGeneral, BorderLayout.CENTER); //ajoute le scrollPane à ta fenetre. Il prendra toute la place possible, à savoir les 1200*700

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 10:09
Je pense aussi que ça vient du layout mais ça ne marche toujours pas avec ton code.

J'avais déjà testé en mettre
this.getContentPane().setLayout(new GridLayout(1, 1));

mais ça n'avais rien changé.
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 10:39
Je mets mon code pour que ça soit plus simple à comprendre :

public MenuPrincipal()
{
this.setTitle("Logiciel");
this.setSize(1200, 700);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);

panelFond.setLayout(null);

try {
panelFond.setImage("agriculture01.jpg");
} catch (IOException e) {
        e.printStackTrace();
}
JScrollPane scrollPaneGeneral = new JScrollPane(panelFond);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(scrollPaneGeneral, BorderLayout.CENTER);

// et ensuite j'ajoute mes autres composant dans panelFond...
}
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 11:34
met un couleur de fond à ton panelFond (panelFond.setBackGround(Color.red);)
toujours rien d'afficher?
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 11:42
Non, la couleur de fond ne s'affiche plus.
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 11:44
Pourtant le panel s'affiche avec ce qu'il contient et je le vois clairement quand j'ajoute :
panelFond.setBorder(BorderFactory.createTitledBorder("panelFond"));
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 11:55
commente un peu la ligne panelFond.setLayout(null);
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 11:59
Comment ça ?

J'ai :

panelFond.setLayout(null);
panelFond.setBounds(0, 0, 1200, 700);  // Je viens d'ajouter cette ligne mais je pense qu'elle ne sert à rien et surtout elle ne change rien.
panelFond.setBorder(BorderFactory.createTitledBorder("Panel de fond"));
panelFond.setBackground(Color.red);
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
6 juin 2012 à 12:02
la ligne panelFond.setLayout(null); mais la en commentaire de sorte qu'elle ne soit plus "active"
cela fera qu'il ne tiendra plus compte des setBounds...
si tu as qqch à l'écran, alors c'est au niveau du layout vraiment qu'il faudra investiguer...
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 12:04
Non, rien ne s'affiche à part le contour de panelFond.

J'ai aussi ajouté :
scrollPaneGeneral.getViewport().setBackground(Color.GREEN);
mais rien ne s'est affiché en vert.
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 12:13
Ce qui est étonnant c'est que dans panelFond, j'ai d'autre panel (avec layout null) dont un contenant des tableaux qui eux sont dans des JScrollPane et l'affichage se fait très bien.
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
6 juin 2012 à 12:29
Quand j'enlève le JScrollPane la couleur s'affiche.
Rejoignez-nous