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

Agents de placement/Fenêtres Java Discussion :

JScrollPane et JPanel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut JScrollPane et JPanel
    Bonjour à tous,

    Je souhaite mettre un scrolling sur un JPanel. J'ai vu sur le forum que c'était une question assez récurrente, mais je n'ai pas trouvé de solutions à mon problème...
    Ma fenêtre se décompose en plusieurs partie. En gros, dans la partie gauche, j'ai une Jtable (avec un scroll qui fonctionne bien). Lorsque l'on clique sur un élément de cette JTable cela met à jour des informations présentes sur la droite.
    La partie droite contient une partie "haute" qui contient des images et une partie basse qui contient du texte.
    Je voudrais rajouter un scrolling sur la partie "haute" (les images) car elles sont parfois trop grandes et "s'étalent" sur la partie du bas. C'est à dire que les images recouvrent le texte de la partie basse.

    Voici comment je crée mon JscrollPane :

    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
     
    private JScrollPane getScrollPanelImages () {
    		if (scrollPanelImages==null) {
    			scrollPanelImages = new JScrollPane(getJPanelImages());
    		}
    		return scrollPanelImages;
    	}
     
    public JPanel getJPanelImages() {
    		if (jPanelImages == null) {
    			jPanelImages = new JPanel();
    			jPanelImages.setPreferredSize(new Dimension(530, 375));
    			jPanelImages.setLayout(new FlowLayout());
    			jPanelImages.add(getJPanelImage1());
    			jPanelImages.add(getJPanelImage2());
    			jPanelImages.setMinimumSize(new Dimension(530, 10));
    		}
    		return jPanelImages;
    	}
     
    public JPanelImage getJPanelImage1() {
    		if (jPanelImage1 == null) {
    			jPanelImage1 = new JPanelImage();
    			jPanelImage1.setPreferredSize(new Dimension(256, 384));
    		}
    		return jPanelImage1;
    	}
    Et pour ceux qui lisent jusqu'au bout : le code de JPanelImage (je ne pense pas que cela joue, mais bon...)

    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
     
    public class JPanelImage extends JPanel {
    	BufferedImage image = null;
     
    	public JPanelImage () {
    		super();
    		setVisible(true);
    	}
     
    	// On redéfinit paint pour afficher l'image
    	public void paintComponent (Graphics g) {
    		if (image!=null) {
    			g.drawImage(image, 0, 0, null);
    		}
    	}
     
    	public void loadImage (String path) {
    		image = ImageToolkit.loadImagefromPath(path);
    		if (image==null) {
    			try {
    				image = ImageIO.read(JPanelImage.class.getResource("0.png"));
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		setSize(image.getWidth(), image.getHeight());
    	    updateUI();
    	}
    }
    Merci pour l'aide que vous pourriez m'apporter, car là j'ai fait le tour de tout ce à quoi j'ai pu penser pendant ces longues heures d'errance !

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il faut que la preferredSize de ton JPanel custo corresponde à la place occupée par tes images.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Merci pour ta réponse, je viens d'essayer, mais cela ne fonctionne pas.
    Le seul moment où j'ai réussi à avoir mon scrolling c'est en définissant le setPreferredSize sur le JScrollPane (avec une taille moindre que l'espace possible).

    J'utilise un BorderLayout, je ne sais pas si cela peut jouer. Si vous voulez je peux mettre le code complet de la classe (un peu long).

    Merci encore pour votre aide !

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Le principe général du JScrollPane est qu'il faut définir la taille de ce JScrollPane, ou la taille du panneau contenant le JScrollPane. Il n'est pas nécessaire de définir la taille du contenu (le truc qui est scrollé) du JScrollPane.

    C'est parce que il n'est pas possible de déterminer la taille du JScrollPane à partir de l'analyse de son contenu.

    Je peux me tromper, en l'état je ne vois pas ce que ton problème à de particulier ? Qu'as-tu trouvé comme doc ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Le principe général du JScrollPane est qu'il faut définir la taille de ce JScrollPane, ou la taille du panneau contenant le JScrollPane. Il n'est pas nécessaire de définir la taille du contenu (le truc qui est scrollé) du JScrollPane.

    C'est parce que il n'est pas possible de déterminer la taille du JScrollPane à partir de l'analyse de son contenu.

    Je peux me tromper, en l'état je ne vois pas ce que ton problème à de particulier ? Qu'as-tu trouvé comme doc ?
    En réalité, mon JScrollPane ne devrait pas avoir une taille "fixe" : dans mon application, j'ai un panel de taille fixe en bas et un le JScrollPane au dessus. Suivant la taille des écrans, le JScrollPane n'a pas la même taille. Je voudrais que le JScrollPane prenne tout l'espace disponible dans cette partie de fenêtre...
    Cela me parait logique qu'on ne puisse pas déterminer la taille d'un JScrollPane à partir de son contenu (puisque c'est un scroll), mais comment faire pour qu'il trouve sa plus grande taille possible ?

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Alors là cela se complique. La seule approche que je connaisse pour faire ça facilement serait de le mettre au centre d'un BorderLayout. Mais je crois qu'il y a déjà quelque chose à cet emplacement dans ton cas.... que tu le veuilles ou non, c'est ce panneau qui prendra toute la place dispo... Peut être en décalant le tout ?... tu mets le composant actuellement au centre au sud, et ton scroll qui est au nord au centre ?... mais même comma ça je ne suis pas sûr que ça fonctionne...

    Sinon tu peux essayer aussi avec un BoxLayout, en donnant une grosse taille max à ton scrollpane, et en mettant une taille max = taille préferrée au autres. Là c'est sûr que ça fonctionne.

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

Discussions similaires

  1. JScrollPane et JPanel
    Par Janosor dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 06/02/2010, 18h11
  2. JScrollPane et JPanel
    Par Yopii dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/10/2009, 11h28
  3. JscrollPane et Jpanel
    Par restricteur dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 21/05/2008, 21h34
  4. JScrollPane et JPanel
    Par elfiestador dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 26/12/2006, 16h43
  5. JScrollPane Graphics/ JPanel
    Par daedric dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 26/05/2006, 12h28

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