JScrollPane qui fait disparaître les autres JPanel [Résolu]

Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
- - Dernière réponse : 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.
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de yannOpenGL
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
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...
Commenter la réponse de cormandyr
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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);
Commenter la réponse de yannOpenGL
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
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
Commenter la réponse de cormandyr
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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é.
Commenter la réponse de yannOpenGL
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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...
}
Commenter la réponse de yannOpenGL
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
met un couleur de fond à ton panelFond (panelFond.setBackGround(Color.red);)
toujours rien d'afficher?
Commenter la réponse de cormandyr
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
Non, la couleur de fond ne s'affiche plus.
Commenter la réponse de yannOpenGL
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
Pourtant le panel s'affiche avec ce qu'il contient et je le vois clairement quand j'ajoute :
panelFond.setBorder(BorderFactory.createTitledBorder("panelFond"));
Commenter la réponse de yannOpenGL
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
commente un peu la ligne panelFond.setLayout(null);
Commenter la réponse de cormandyr
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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);
Commenter la réponse de yannOpenGL
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
0
Merci
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...
Commenter la réponse de cormandyr
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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.
Commenter la réponse de yannOpenGL
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
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.
Commenter la réponse de yannOpenGL
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013
0
Merci
Quand j'enlève le JScrollPane la couleur s'affiche.
Commenter la réponse de yannOpenGL