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 :

JPanel et positionnement sur un ViewPort


Sujet :

AWT/Swing Java

Vue hybride

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut JPanel et positionnement sur un ViewPort
    Bonjour,

    J'ai un petit problème pour positionner un viewPort sur un JPanel avec une image en fond et j'ai besoin d'un petit coup de main.

    En fait, j'ai un classe qui étend JPanel, dans laquelle j'affiche une image.

    J'affiche l'image au travers d'un JScrollPane et donc d'un JViewPort.

    Lorsque l'image est chargée, je peux, en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.getViewport().setViewPosition(new Point(x,y));
    Placer le viewport ou je veux, seulement, quand je charge l'image, et que je veux placer le viewport en même temps, je n'y arrive pas.

    Je sais pas si je suis bien clair, je reprend par l'exemple :

    - Je charge une image que j'ai sur mon pc dans un objet A de classe AJ qui étend JPanel.
    - Je charge cette instance dans un JScrollpane (avec setViewPort(A))
    - J'essaie directement de placer l'image à un point donné de A mais cela ne marche pas...
    - En revanche si j'ai un bouton pour replacer l'image et que j'appuie dessus ensuite, la ca fonctionne...

    J'ai cherché du côté de l'affichage et des fonctions repaint() et autre mais je ne trouve pas de solution, pourtant j'essaie bien de positionné l'affichage après le chargement de l'image.

    Quelqu'un pourrait m'expliquer pourquoi ca ne marche pas que j'essaie de régler le problème ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    une proposition comme une autre, essaie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        image.getViewport().setViewPosition(new Point(x,y));
      }
    });
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    Cette proposition fonctionne mais si je comprend bien, elle crée un nouveau thread qui attend que tout le reste soit bien fait c'est ca ? Et donc la question qui va avec, est-ce correct d'un point de vue développement ? J'ai l'impression que c'est un peu un moyen pour avoir le résultat escompté non ?

    En tout cas merci beaucoup pour ton aide.

    Si quelqu'un a d'autre solutions je prend

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    C'est au contraire le moyen de tout exécuter dans un seul thread.

    Lors de la création et de l'affichage du JScrollPane, il va y avoir pas mal d'événements qui seront lancés (HierarchyEvent, ComponentEvent, etc...). Ces événements seront traités par l'EDT. Si dans un autre thread tu t'amuses à modifier la position du JViewPort, l'EDT risque d'avoir encore des événements à traiter qui vont la remodifier après toi.

    Le code que j'ai posté sert à s'assurer que c'est bien l'EDT qui va s'occuper de positionner le ViewPort, et ce après que tous les événements qui puissent parasiter aient été traités.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    D'accord d'accord !!! Merci beaucoup pour ces précisions et ton aide précieuse !

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

Discussions similaires

  1. Positionnement sur un JPanel/BoxLayout
    Par Deign dans le forum Débuter
    Réponses: 2
    Dernier message: 16/04/2011, 14h24
  2. Cherche bouton positionnable sur un JPanel
    Par Stéphane Bruckert dans le forum Composants
    Réponses: 4
    Dernier message: 26/02/2010, 15h36
  3. Réponses: 1
    Dernier message: 10/05/2005, 14h14
  4. Réponses: 2
    Dernier message: 11/01/2005, 14h10
  5. [Forms6i] positionner sur le Dernier Record
    Par bargou dans le forum Forms
    Réponses: 3
    Dernier message: 06/12/2004, 10h44

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