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 :

Centrer horiz.t un JPanel dans un tab de JTabbedPane doté d'un JScrollPane


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Centrer horiz.t un JPanel dans un tab de JTabbedPane doté d'un JScrollPane
    Bonjour.

    Quand on décide d'employer un JScrollPanel parce que l'objet à afficher (un JPanel contenant un GroupLayout, dans mon cas) est plus long que la hauteur du conteneur (un tabPanel1 d'un JTabbedPane, dans mon cas), alors que la largeur de cet objet JPanel est inférieure à la largeur de ce conteneur, on obtient
    - l'ascenceur vertical (à droite du tabPanel1) sans l'ascenceur horizontal (sous le tabPanel1).
    - le JPanel positionné à la gauche du tabPanel1
    A l'aide d'un GridBagLayout, je tente de positionner le JPanel au milieu horizontal du tabPanel1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            scrollPanel1 = new donnéesDEntrée().getScrollPanel();
            JPanel tabPanel1 = new JPanel();
            tabPanel1.setLayout(new GridBagLayout());
            GridBagConstraints grBgConstraints = new GridBagConstraints();
            // No grBgConstraints.gridx, .gridy, .gridwidth, .gridheight ...
            grBgConstraints.fill = GridBagConstraints.CENTER;
            tabPanel1.add(scrollPanel1, grBgConstraints);
            tabbedPane.addTab("Sélection fichier", icon, tabPanel1, "blabla");
            tabbedPane.setPreferredSize(new Dimension(830, 680));
    Mais un mauvais effet est causé:
    - Le tabPanel1 paraît comme voulu au milieu horizontal du tabpanel (mais dans un cadre non voulu).
    - j'ai perdu les deux ascenseurs. Si je réduis la frame principale pour retrouver l'un d'eux ou les deux, le tabPanel1 disparaît complètement ! C à d si je tente de passer d'un tant soit peu sous la largeur ou la hauteur initiale du tabbedPane, définie par le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabbedPane.setPreferredSize(new Dimension(830, 680));
    Si je n'implémente pas ce 'setPreferredSize()', à l'affichage initial, mon HMI prend une dimension dépassant l'écran, à cause de la dimension d'un des autres 'tabPanel', et je n'ai plus aussi d'affichage des ascenseurs.

    Autrement dit : Comment faire coexister un tabbedPane doté d'un 'setPreferredSize()' avec un Jpanel habritant un GridBagLayout, lui-même habritant au centre un JScrollPane (, lui-même habritant un GroupLayout()).

    Merci d'avance à ceux qui tentent de m'aider.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut
    Bonjour.
    Voici la réponse à ma question ... d'utilité générale, je pense, pour les développeurs en Java-Swing.

    La question était : Comment parvenir au centrage horizontal d'une page JPanel (dotée d'un layout) dans mon JTabbedPane = main Frame, alors que cette page Jpanel est dotée de JScrollPage et est moins large que la JTabbedPane ?

    La réponse est :
    - Mettre en oeuvre un premier JPanel (panneauTteLaPage) incluant un layout et tout le contenu de page.
    - Mettre en oeuvre un deuxième JPanel (panneauAScrolling) contenant JScrollPane et le panneauTteLaPage.
    - tabPane.addTab(titreDuTabpane, new JScrollPane(panneauAScrolling));

    Ca marche comme désiré.

    Mon erreur était : Je n'employais qu'un seul JPanel (panneauTteLaPage) incluant un grand 'GroupLayout' et qui constituait un des objets dans une classe séparée (qui extends JScrollPane). J'implémentais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            // 'this' for my class extending JScrollPane  
            this.setViewportView(panneauTteLaPage);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            panneauTteLaPage.setLayout(layout);  
            JPanel panneauAScrolling = new JPanel();  
            panneauAScrolling.add(panneauTteLaPage);  
            this.setViewportView(panneauAScrolling);
    C'est comme si le JPanel panneauAScrolling dans ' panneauAScrolling.add(panneauTteLaPage); ' offre le service de centrage recherché, et l'unique JPanel dans mon implémentation précédente ne l'offrait pas. La raison reste à trouver. Une situation conflictuelle existerait entre le GroupLayout et le JScrollPane ? Très improbable.

    Je n'oublierai pas le 'Résolu' dans quelques jours.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

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

Discussions similaires

  1. Afficher un même JPanel dans plusieurs onglets de JTabbedPane (dans une même JFrame)
    Par laurent.fructus dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 17/03/2014, 08h06
  2. Centrer mon objet Jpanel dans ma fenêtre
    Par chiheb205 dans le forum Débuter
    Réponses: 2
    Dernier message: 06/05/2010, 15h05
  3. Centrer un Jpanel dans un Jpanel
    Par ben.IT dans le forum Débuter
    Réponses: 2
    Dernier message: 02/05/2010, 13h25
  4. centrer un JPanel dans une frame
    Par line86 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/01/2009, 14h38
  5. [Débutant] Centrer un JPanel dans un JFrame
    Par Narvis dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 28/11/2008, 12h05

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