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

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

Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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.
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
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...
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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);
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
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
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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

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...
}
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
met un couleur de fond à ton panelFond (panelFond.setBackGround(Color.red);)
toujours rien d'afficher?
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Non, la couleur de fond ne s'affiche plus.
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

Pourtant le panel s'affiche avec ce qu'il contient et je le vois clairement quand j'ajoute :
panelFond.setBorder(BorderFactory.createTitledBorder("panelFond"));
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
commente un peu la ligne panelFond.setLayout(null);
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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);
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
8
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...
Messages postés
141
Date d'inscription
samedi 4 février 2012
Statut
Membre
Dernière intervention
3 avril 2013

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

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

Quand j'enlève le JScrollPane la couleur s'affiche.