Bonjour,
Il faudrait que je detecte quand apparait le scroll horizontal dans un Jscrollpane. Ce dernier peut en effet être redimensionné par l'utilisateur car il est dans un JSplitPane. Comment faire ceci ?
Merci d'avance
Bonjour,
Il faudrait que je detecte quand apparait le scroll horizontal dans un Jscrollpane. Ce dernier peut en effet être redimensionné par l'utilisateur car il est dans un JSplitPane. Comment faire ceci ?
Merci d'avance
Normalement le JScrollPane gère ça tout seul. En effet le déplacement d'un JSplitPane fait en sorte que les composants internes soient revalidés, et donc leur layouts recalculés.
Si le problème est toujours celui des sujets précédents, la solution que j'ai proposé la semaine dernière fonctionne parfaitement dans un JSplitPane...
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Bonjour,
C'est en effet en rapport. Ton WrapFlowLayout fonctionne en effet mais il a un bug. Dans une certaines configuration, que mon logiciel rencontre souvent, la méthode preferredLayoutSize n'est plus appelée lors du redimensionnement du JScrollPane et une barre apparait.
Je t'ai fais une vidéo pour que ça soit plus clair : http://www.lesmaisonsactua.com/Untit...s%20titre.html . Voici l'explication texte :
Cela se produit lorsque tu met tu ressert les barres déplaçables au maximum autour des boutons et que tu deplace la barre de droite vers les boutons, au premier coup le scroll vertical apparait (normal) et au deuxième le scroll vertical apparait et le JPanel n'est plus redimensionné car la méthode preferredLayoutSize n'est plus appelée
Un évènement créé lorsque le scroll horizontal apparait réglerai le soucis car on pourrait réappeler la méthode preferredLayoutSize manuellement.
As tu bien pris la version du WrapFlowLayout dont le getMinimumSize renvoie(c'est à dire celle que j'ai donné dans mon dernier post)?
Code : Sélectionner tout - Visualiser dans une fenêtre à part new Dimension(0,0);
Car avec cette version le problème que tu décris n'existe pas.
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Oui oui j'ai bien ça. Dans la vidéo j'ai vraiment fait un copier coller de ce que tu m'as donné dans un nouveau projet Eclipse et je l'ai lancé. Le problème est apparu. Pourquoi toi tu ne l'as pas ?
Quelle est la JRE que tu utilises?
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
J'ai fini par reproduire le problème, et trouvé un petit workaround, qui consiste à demander au JScrollPane de se bouger le cul en cas de redimensionnement:
C'est bourrin mais ça marche.
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 JScrollPane scp = new JScrollPane(p); scp.addComponentListener(new ComponentListener() { @Override public void componentShown(ComponentEvent e) { scp.validate(); scp.getViewport().getView().validate(); } @Override public void componentResized(ComponentEvent e) { scp.validate(); scp.getViewport().getView().validate(); } @Override public void componentMoved(ComponentEvent e) { scp.validate(); scp.getViewport().getView().validate(); } @Override public void componentHidden(ComponentEvent e) { scp.validate(); scp.getViewport().getView().validate(); } });
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Super merci beaucoup c'est ça la solution. Par contre je ne sais pas pourquoi j'avais encore le problème. Mais les évènements se déclenchaient au bon moment.
J'ai rajouté la ligne suivante dans componentResized et ça fonctionne enfin :
Au final le problème aura été bien compliqué pour faire ce qu'aurait du faire un simple FlowLayout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part p.setSize(MonWarpLayout.preferredLayoutSize(p));
Merci infiniment pour ton aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager