Swing + JScrollPane = ....

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 - 7 janv. 2006 à 21:43
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 - 8 janv. 2006 à 10:07
Bonjour a tous :)

Je bloque sur un problème probablement stupide concernant les JScrollPane....
J'ai une classe JListsDisplay qui étend JPanel, dont la méthode paintComponent(Graphics g) est redéfinie, et qui affiche graphiquement des listes chaînées (et oui, c'est un projet DUT.... ) ....
Je l'utilise pour initialiser un JScrollPane comme ceci :

JListsDisplay contenu = new JListsDisplay();
JScrollPane scroll = new JScrollPane(contenu);

Premier souci : lorsque le programme se lance, ce qui est affiché dans contenu l'est pendant un quart de seconde, puis s'efface....
Second probleme : lorsque je déplace les ascenceurs, le redessin de contenu ne se fait pas correctement... En fait, c'est comme si ce qui était affiché ne s'effacait....

Puis je fais un super.paintComponent dans les méthode paintComponent de JListsDisplay et de JScrollPane, donc je vois pas trop où est le souci....

En espérant avoir été assez clair... Si c'est pas le cas, je mettre un screenshot pour le probleme 2 :)

Merci par avance

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
7 janv. 2006 à 23:11
Salut,



peut tu donner les codes de tes methodes paintComponent stp, juste pour
info dans un paintComponent dun conteneur favorise
'super.paintComponents' plutôt que 'super.paintComponent' .

WORA
0
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
7 janv. 2006 à 23:24
Salut

Merci de ta réponse, voici le contenu des méthodes :

Dans JListsDisplay la méthode se présente comme ceci :

public void paintComponent(Graphics g)
{
super.paintComponent(g);
afficherListes(lists); // Comme tu dois t'en douter, affiche les listes graphiquement
}

Tout est encapsulé dans la classe JScrollableDisplay, dont je te mets le code utile ci-après:

public class JScrollableDisplay extends JPanel
{
JListsDisplay contenu = new JListsDisplay();
JScrollPane scroll = new JScrollPane(contenu);

JScrollableDisplay()
{
contenu.setBackground(Color.WHITE);
setLayout(new BorderLayout());
contenu.setPreferredSize(new Dimension(5000, 5000));
add(scroll, BorderLayout.CENTER);
}

public void paintComponent(Graphics g)
{
super.paintComponents(g); // Modifié après ton message, aucun changement :(
}
// D'autres méthode inutiles ici :p
}

Aurais-je oublié quelque chose ?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 janv. 2006 à 00:44
Re,





Le paintComponent de JScrollableDisplay n'est pas utile

sinon le super.paintComponents concerne surtout la methode paintComponent du panel

WORA
0
platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
8 janv. 2006 à 10:07
Merci, j'ai trouvé pourquoi ca ne fonctionnait pas correctement...Je mets la solution ici, des fois que ca puisse aider quelqu'un

En fait, dans ma méthode afficherListes, j'utilisais un this.getGraphics() au lieu d'utiliser le Graphics passé en paramètre a paintComponent()...En remplaçant this.getGraphics() tout fonctionne comme il faut

Merci encore pour ton temps
0
Rejoignez-nous