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

AWT/Swing Java Discussion :

JScrollPane + JPanel: Redimension inopérante


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut JScrollPane + JPanel: Redimension inopérante
    Bonjour.

    J'ai un problème plus qu'inattendu avec un JScrollPane. Je vous explique:

    J'ai un JPanel où je dessine des objets à moi (genre des cercles) et je peux les faire bouger à volonté avec la souris...

    Cependant, si j'agrandi la fenêtre et que je glisse donc un objet en bas à droite de l'écran et que je redimensionne ma fenêtre pour la rendre à nouveau petite, mon objet n'est plus visible... D'accord c'est normal.
    Donc pour remédier à ça j'ai mis un JSCrollPane et je procède comme suit:
    • Intégration de mon JPanel "g" dans la JFrame: add(newJscrollPane(g));
    • A chaque fois que je bouge un objet dans mon JPanel, je calcule si la position de l'objet déplacé est supérieure aux dimensions du JPanel, si c'est le cas je fais genre setSize(dim) avec dim la nouvelle dimension.
    Cependant je n'ai pas les barres de défilement qui se mettent à jour et donc tout ce que je fais ne sert à rien...

    Quelqu'un peut-il m'aider ?
    Si vous avez besoin de quelques sources pour comprendre, dites-moi le.

  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Essaye le setPreferredSize sur ton JPanel

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Rajoute un MouseMotionListener et sur le drag fait à peu près ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rectangle r = new Rectangle(e.getX(), e.getY(), 50, 50);
    g.scrollRectToVisible(r);
    ou regarde du côté de la méthode JComponent.setAutoScrolls()

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    oui merci. Il s'agissait bien du preferredSize...

    En fait j'ai redéfinis getPreferredSize() pour qu'il calcule la taille du composant selon la position de l'objet le plus lointain.

    Merci.
    Résolu.

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

Discussions similaires

  1. JScrollPane, JPanel et KeyListener
    Par Patrice Henrio dans le forum Composants
    Réponses: 2
    Dernier message: 05/09/2013, 08h36
  2. Double JscrollPane (JPanel + JTextArea)
    Par movrack dans le forum Composants
    Réponses: 1
    Dernier message: 09/05/2011, 15h49
  3. JScrollPane(JPanel) - scroll inactif
    Par Ceubex dans le forum Composants
    Réponses: 13
    Dernier message: 13/04/2011, 15h16
  4. jscrollpane jpanel freelayout
    Par supernicoco dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/06/2009, 10h03
  5. Déplacement avec la souris dans un JScrollPane/JPanel
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/04/2007, 17h10

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