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 : modification du viewport


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut JScrollPane : modification du viewport
    Bonjour,

    j'ajoute un JPanel dans un JScrollPane mais celui-ci n'affiche jamais les scrollbar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     public void addImagePanel(ImagePanel imgPane) {
            if ( imgPane != null ) {
                sclPaneImage.setViewportView(imgPane);
                sclPaneImage.validate();
                repaint();
            } else {
                System.err.println("Erreur de chargement");
            }
        }
    Quelqu'un à une idée ?

    Ou suis-je obligé d'ajouter un JPanel("panelScroll") dans le JScrollPane et d'ajouter "imgPane" à "panelScroll" ?

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    lu,

    tu as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sclImage = new JScrollPane(imgPane);
    ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Non je n'ai pas essayé praceque je voudrais ajouter un JPanel "imgPane" dans un JScrollPane..

    Mais si ça ne marche pas je vais faire ça..

    Et puis j'aurais alors
    JPanel : le JPanel de ma JFrame ou je vaux placer mon scrollPane
    |-> JScrollPane : le jscrollpane que je veux
    . |-> JPanel : imgPane
    Et je veux diminiuer au miximum le nombre de containers

  4. #4
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    vu ta hiérarchy de container, tu peux peut-être zapper le premier container en faisant un setContentPane avec ton JScrollPane... je sais pas trop si c'est possible mais c'est pas avec 3 containers que tu vas surcharger ton applic

  5. #5
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    d'ailleurs JScrollPane prend un Component en paramètre, donc tu peux essayer de lui donner directement un JLabel dans lequel tu auras mis ton image

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par xixi31
    mais c'est pas avec 3 containers que tu vas surcharger ton applic
    Non je sais mais j'ai essayé d'ajouter un Jpanel à un JScrollPane avec setViewPort() et ça n'a pas marché alors je voulais savoir pourquoi.

    Bien sur que je peux ajouter 3 conteiners mais j'aimerais savoir pourquoi le setViewPort ne fonctionne pas ..

    Merci

  7. #7
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    voici le constructeur JScrollPane prenant un composant :
    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
     
        public JScrollPane(Component view, int vsbPolicy, int hsbPolicy) 
        {
        setLayout(new ScrollPaneLayout.UIResource());
            setVerticalScrollBarPolicy(vsbPolicy);
            setHorizontalScrollBarPolicy(hsbPolicy);
        setViewport(createViewport());
        setVerticalScrollBar(createVerticalScrollBar());
        setHorizontalScrollBar(createHorizontalScrollBar());
        if (view != null) {
            setViewportView(view);
        }
        setOpaque(true);
            updateUI();
     
        if (!this.getComponentOrientation().isLeftToRight()) {
            viewport.setViewPosition(new Point(Integer.MAX_VALUE, 0));
        }
        }
    Voici celui que tu devrais utiliser par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public JScrollPane(Component view) {
            this(view, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_AS_NEEDED);
        }
    tu remarqueras que le premier constructeur en haut fait effectivement appel à la méthode setViewportView mais il fait aussi appel aux méthodes createVerticalScrollBar et createHorizontalScrollBar.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui j'ai vu mais ça ne marche pas non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sclPaneContent.setViewportView(imgPane);
                sclPaneContent.setVerticalScrollBar(sclPaneContent.createVerticalScrollBar());
                sclPaneContent.setHorizontalScrollBar(sclPaneContent.createHorizontalScrollBar());
    done toujours un sclPane non scrollable !


    Mais je crois que le problème viens d'ailleurs car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    splitPane.setRightComponent(new JScrollPane(imgPane));
    me donne toujours un JScrollPane non Scrollable..

    Je soupçone imgPane.
    imgPane est en fait un JPanel qui affiche une image en surchargant paintCompoenent :
    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
     
    public ImagePanel(File imagePath) {
            this.imagePath = imagePath;
            try {
                image = ImageIO.read(imagePath);   
                setSize( image.getWidth(null), image.getHeight(null));
            } catch (IOException e) {
                    //
            }   
        }
     
        protected void paintComponent(Graphics g) {
          Graphics2D surface = (Graphics2D) g;
          surface.drawImage(image, 0, 0, null);
       }
    EDIT :
    Oui le problème viens bien de ImagePanel :
    en rajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setPreferedSize(/* Dimension de l'image */)
    Ca fonctionne.

    Merci

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

Discussions similaires

  1. Enregistrer l'image du viewport d'un jscrollpane
    Par Khrono dans le forum Composants
    Réponses: 2
    Dernier message: 20/10/2011, 16h51
  2. Modification de JTree dans un JScrollPane
    Par beber* dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 12/08/2011, 13h48
  3. [Swing][JScrollPane]le Viewport ne s'adapte pas au contenu
    Par Cyberwan dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 01/02/2006, 20h40
  4. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  5. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 12h06

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