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 :

[JPanel] panel plus grand que son conteneur


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut [JPanel] panel plus grand que son conteneur
    Bonjour,

    Je dispose :
    - D'un JFrame d'une taille de 400x400
    - D'un JPanel d'un taille de 500x500

    J'aimerai insérer le JPanel dans la JFrame. Comme le panel est plus grand que la frame, j'aimerai donc avoir un ScrollBar.

    J'ai essayé d'utiliser un JScrollPane, mais j'ai du mal comprendre son fonctionnement car je n'arrive pas à obtenir ce que je souhaite...

    Voici mon code :

    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
    30
    31
     
    package frames;
    import javax.swing.*;
    import java.awt.*;
     
    public class essai extends JFrame {
     
        JPanel panel2;
        JPanel panel1;
     
        public essai(){
     
           panel1 = new JPanel();
           panel1.setLayout(null);
     
           panel2 = new JPanel();
           panel2.setBackground(Color.BLACK);
           panel2.setBounds(0,0, 500, 500);
           panel1.add(panel2);
           getContentPane().add(new JScrollPane(panel1));
     
           this.setSize(400,440);
           this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           this.setVisible(true);
     
        }
        public static void main(String[] aer){
           new essai();
        }
     
    }
    Avec mon code, je n'obtiens pas le ScrollBar, et mon panel est tronqué.

    Pouvez-mous m'éclaircir?
    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    pour utiliser un JScrollPane, tu fais un new JScrollPane(pannneauInterieur), puis tu ajoute le JScrollPane dans le contentPane de la JFrame

  3. #3
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    pour utiliser un JScrollPane, tu fais un new JScrollPane(pannneauInterieur), puis tu ajoute le JScrollPane dans le contentPane de la JFrame
    C'est bien ce que j'ai fait (enfin je crois ) dans mon 1er post mais cela ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getContentPane().add(new JScrollPane(panel1));
    (Voir code en entier dans mon 1er post)

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    arf mal vu

    ton problème viens de ton setLayout(null) pour le panel1, comme il a pas de layoutmanager, il change pas de taille en fonction de son contenu (panel2) et donc JScrollPane n'a rien à scroller

  5. #5
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Oui, mais que faut-il mettre dans mon cas comme Layout? car je n'arrive pas à trouver...

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    http://java.sun.com/docs/books/tutor...ut/visual.html

    Voilà pour faire ton shopping layout. On peut pas dire à ta place ce dont tu as besoin

  7. #7
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Merci pour le lien.

    Seulement mon pannel (dans mon code pannel2) a une dimension fixe (500x500).
    Pour pouvoir garder cette dimension, d'après le lien que tu m'as donné, je ne trouve que deux solutions :
    - Utilisation d'un FlowLayout (mais mes dimensions ne sont plus respectées)
    - Utilisation d'un layout null (ce que j'ai fait dans mon 1er post)

    Avant d'ouvrir ce sujet, j'avais déjà consulté ce lien. C'est pourquoi j'avais décidé d'utiliser un layout null pour panel1.
    Donc je ne vois pas quoi utiliser...

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    pour fixer la taille du panel, on prend un layout qui respecte les preferredSize/minimumsize, et ensuite on définit sur le composant qu'on ajoute (ici panel 2), le minimumSize et le preferredSize. Par défaut, pour les JPanel, cette taille est calculée en fonction du contenu, mais tu peux la fixer en suchargeant getPreferredSize() / getMinimumSize()

  9. #9
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Un très grand merci pour cette réponse qui m'a beaucoup éclairci mon problème dont j'avaiss depuis très longtemps
    Juste une précision: Y-a-t-il une différence entre surcharger les méthodes getPreferredSize() / getMinimumSize() et utiliser les méthodes setPreferredSize() / setMinimumSize()?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    normalement, si tu passe par setxxx, il ne devrait plus faire les calculs, la surcharge n'est alors pas nécessaire

Discussions similaires

  1. JPanel plus grand que le JFrame (pour jeu)
    Par Gudradain dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 21/02/2009, 23h50
  2. Bureau plus grand que l'ecran
    Par taitaitai71 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 21/04/2006, 09h59
  3. [CSS] option plus grand que select
    Par simoryl dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 11/01/2006, 19h27
  4. Réponses: 4
    Dernier message: 06/01/2006, 18h41
  5. [JFrame] Création d'une fenetre plus grande que l'ecran
    Par thetoctoc dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/09/2004, 11h05

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