IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

évènement sur un Jscrollpane à l'apparition du scroll


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut évènement sur un Jscrollpane à l'apparition du scroll
    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

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    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.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    As tu bien pris la version du WrapFlowLayout dont le getMinimumSize renvoie (c'est à dire celle que j'ai donné dans mon dernier post)?

    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.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    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 ?

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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.

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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:

    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();
     
                }
            });
    C'est bourrin mais ça marche.
    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.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p.setSize(MonWarpLayout.preferredLayoutSize(p));
    Au final le problème aura été bien compliqué pour faire ce qu'aurait du faire un simple FlowLayout.

    Merci infiniment pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancer évènement sur le scroll.
    Par madevilts dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/04/2008, 15h28
  2. événement sur INSERT, DELETE, UPDATE
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/12/2004, 15h40
  3. Quel évènement sur le redimensionnement ?
    Par Yoh dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 01/07/2004, 13h05
  4. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo