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 et plusieurs vues


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut JScrollPane et plusieurs vues
    Bonjour bonjour,
    je voudrais savoir comment faire pour récupérer ce que je vois dans une fenêtre pour le réafficher dans une autre fenêtre.
    Explication:
    J'ai un JTabbedPane avec plusieurs onglets dans lesquels je dessine des graphes et je voudais faire une petite fenêtre de navigation dans laquelle je vois le graphe courant en tout petit.
    Une fois que j'ai un graphe dans un des onglets, je récupère la vue du JScrollPane de mon onglet avec getViewport() et getView() et je réussi à voir mon graphe dans la fenêtre de navigation mais le graphe disparait de mon onglet.
    Que faire?
    merci...

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par troussepoil
    Bonjour bonjour,
    je voudrais savoir comment faire pour récupérer ce que je vois dans une fenêtre pour le réafficher dans une autre fenêtre.
    Explication:
    J'ai un JTabbedPane avec plusieurs onglets dans lesquels je dessine des graphes et je voudais faire une petite fenêtre de navigation dans laquelle je vois le graphe courant en tout petit.
    Une fois que j'ai un graphe dans un des onglets, je récupère la vue du JScrollPane de mon onglet avec getViewport() et getView() et je réussi à voir mon graphe dans la fenêtre de navigation mais le graphe disparait de mon onglet.
    Que faire?
    merci...
    C'est normal il me semble, en java, un objet ne peut pas avoir 2 parents, donc il faut que tu crée un nouvel objet dans lequel tu affiche la même chose, mais tu ne peut pas récupérer le même objet.

  3. #3
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Essaie ceci (inspiré de la FAQ Java) :
    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
     
    public class MonPanel extends JComponent {<div style="margin-left:40px">
    private Image image;
     
    public void paintComponent(Graphics g) {
        if (image != null) {
           g.drawImage(image,0,0,null);
        }
    } 
     
    public void paintView(JScrollPane sp) {
       this.image = getImage(sp.getViewport().getView());
       repaint();
    }</div><div style="margin-left:40px">public Image getImage(Component component){
       if(component==null){return null;}
       int width = component.getWidth();
       int height = component.getHeight();
       BufferedImage image = new BufferedImage(width, height, 
                                                 BufferedImage.TYPE_INT_RGB);
       Graphics2D g = image.createGraphics();
       component.paintAll(g);
       g.dispose();
       return image;
    }</div>}

  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
    Sinon, en plus direct :
    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
    public class MonPanel extends JComponent {
     
      private JComponent target;
     
      public MonPanel(JComponent target) {
        this.target = target;
      }
     
      public void paintComponent(Graphics graphics) {
     
        Graphics2D g = (Graphics2D) graphics;
     
        if(getWidth() == 0 || getHeight() == 0 ||
           target.getWidth() == 0 || target.getHeight() == 0)
          return;
     
        double scaleX = this.getWidth() / (double) target.getWidth();
        double scaleY = this.getHeight() / (double) target.getHeight();
     
        g.scale(scaleX, scaleY);
        target.paint(g);
        g.scale(1/scaleX, 1/scaleY);
      }
    }
    "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 confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Citation Envoyé par wichtounet
    C'est normal il me semble, en java, un objet ne peut pas avoir 2 parents, donc il faut que tu crée un nouvel objet dans lequel tu affiche la même chose, mais tu ne peut pas récupérer le même objet.
    Je ne veux pas récupérer le même objet mais seulement sa 'vue'. Je réussi a afficher plusieurs fois le même graphe ( de la classe JGraph ). En effet, je créer un graphe sur lequel j'effectue des opérations et j'affiche un autre graphe dans un autre onglet en créant un nouveau graphe auquel j'affecte le layoutCach ou le model du premier graphe. Ainsi, j'ai le même graphe ( en fait deux objets différents qui ont la même tête ).
    Je pensais qu'il pourrait y avoir une méthode similaire pour le JScrollPane. Voilà.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    merci pour vos bouts de code mais ça me laisse un problème. ça copie le graphe en entier alors que je voudrais représenter seulement la partie visible du graphe dans le JScrollPane, représentation qui est donc susceptible de changer en fonction de l'onglet dans lequel on est.
    Au secours !!!

  7. #7
    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
    As tu essayé de recopier le JViewport au lieu du graphe ?

    De plus, il faudra que ton composant implémente les Listeners adéquats (pour écouter le JTabbedPane et le JScrollPane).
    "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.

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    oui oui, en fait, j'ai tester de récupérer le JViewPort et le View du JViewPort mais dans les deux cas mon JScrollPane de base se retrouve vide.
    J'ai un JScrollPane jsp1.
    J'ai un JScrollPane jsp2.
    si je fais un:
    jsp2.setJViewport(jsp1.getViewport());
    ça rempli jsp2 mais ça vide jsp1.
    je peux comprendre puisque un Component ne peut pas avoir deux parents mais pourquoi ça ne fonctionne pas si je récupère le View du JViewPort:
    jsp2.setJViewportView(jsp1.getJViewport().getView());

    C'est peut-être un truc bête mais ça me bloque(sniff).

Discussions similaires

  1. Plusieurs vues sur un même fichier
    Par minicat dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/05/2014, 21h53
  2. [MFC] Plusieurs vues sur le même CTreeCtrl
    Par Denn's dans le forum MFC
    Réponses: 4
    Dernier message: 17/04/2006, 19h12
  3. [MFC]Application avec plusieurs vues
    Par tus01 dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2006, 16h17
  4. [MFC]Impression de plusieurs vues
    Par valdeub dans le forum MFC
    Réponses: 3
    Dernier message: 19/01/2006, 09h30
  5. Plusieurs vues pour le même objet
    Par nicolas66 dans le forum OpenGL
    Réponses: 4
    Dernier message: 25/10/2004, 10h27

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