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 :

Dimensionner des JPanel à l'intérieur d'un JPanel (SWING)


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut Dimensionner des JPanel à l'intérieur d'un JPanel (SWING)
    Voilà mon problème:
    j'ai créer un JPanel qui contient 5 JPanel et dans ces 5 JPanel, j'en ai un qui contient lui aussi 3 JPanel les uns ua-dessus des autres!
    Je voudrais dimenssionner ces 3 JPanel pour qu'ils prennent respectivement 15%, 60% et 25% de la hauteur du JPanel qui les contient...
    Comment puis-je faire?

    J'ai essayé les méthodes setPreferredSize, setSize, setBounds mais appremment rien ne marche...

    Si vous avez des idées n'hésitez pas!

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut
    JPanel drawingArea = new JPanel();

    drawingArea.setPreferredSize(new Dimension(400, 0));

    En pixel tu peut t'organiser?

  3. #3
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Tu dois faire un Layout personnalisé qui gère ces différentes tailles.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    /*
     * MyLayout.java
     *
     * Created on 2 mars 2006, 15:48
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package xPoubelle;
     
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.LayoutManager;
     
    /**
     *
     * @author Lethal
     */
     
    //La classe doit implémenter layout manager
    public class MyLayout implements LayoutManager{
     
        Dimension taille;
        Component[] composants;
        int ratio[] = {15,60,25};
        int nbr;
        int h,w;
     
        /** Creates a new instance of MyLayout */
        public MyLayout() 
        {
        }
     
        public void addLayoutComponent(String name, Component comp) 
        {
     
        }
     
        public void removeLayoutComponent(Component comp) 
        {
     
        }
     
        public Dimension preferredLayoutSize(Container parent) 
        {
            return parent.getSize();
        }
     
        public Dimension minimumLayoutSize(Container parent)
        {
            return parent.getSize();
        }
     
        // on ne redéfinit que la méthode qui est appelée chaque fois qu'on doit repositionner les composants
        public void layoutContainer(Container parent)
        {
            // on récupère la liste des composants
            composants = parent.getComponents();
     
            // on récupère la taille du panel qui contient les 3 panels
            taille = parent.getSize();
            System.out.println("taille de la fenêtre: " + taille);
     
            // coordonnées en x et y
            w = (int)taille.getWidth();
            h = (int)taille.getHeight();
            nbr = composants.length;
     
            System.out.println("nombre de composants: " + nbr);
     
            // Si on a au moins 3 composants on affiche les trois premier en respectant les ratio définis plus haut
            if(nbr >= 3)
            {
                    composants[0].setBounds(0,0,w,h*ratio[0]/100);
                    composants[1].setBounds(0,h*ratio[0]/100,w,h*ratio[1]/100);            
                    composants[2].setBounds(0,getRealSize(0) + getRealSize(1),w,h - (getRealSize(0) + getRealSize(1)));     
     
                    if(nbr > 3)     System.out.println("Je n'affiche pas plus de 3 composants");
            }  
            else
            {
                System.out.println("Il me faut au moins 3 compostants");
            }
        }   
     
        // calcul la taille réelle en fonction de la hauteur de la fenêtre et du ratio
        public int getRealSize(int numeroRatio)
        {
            return h*ratio[numeroRatio]/100;
        }
    }
    Une frame de test:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    /*
     * testsuperlayout.java
     *
     * Created on 2 mars 2006, 16:04
     */
     
    package xPoubelle;
     
    import java.awt.Color;
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    /**
     *
     * @author  Lethal
     */
    public class testLayout extends javax.swing.JFrame {
     
        /** Creates new form testsuperlayout */
        public testLayout() {
            initComponents();
     
            for(int i=0; i< 240 ; i += 70)
            {
                JPanel panel = new JPanel();
                panel.setBackground(new Color(i,i,i));
                this.getContentPane().add(panel);
            }
            this.getContentPane().setLayout(new MyLayout());
     
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
        private void initComponents() {
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                    layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(0, 400, Short.MAX_VALUE)
                    );
            layout.setVerticalGroup(
                    layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(0, 300, Short.MAX_VALUE)
                    );
            pack();
        }
        // </editor-fold>                        
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new testLayout().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        // End of variables declaration                   
     
    }

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut
    Nickel merci beaucoup à vous deux...

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

Discussions similaires

  1. Dimensionnement des Jpanels dans un Jframe
    Par ImeneBel dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 13/04/2014, 19h14
  2. Identification des X et Y dans un JPanel
    Par fortman1987 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 21/02/2013, 14h29
  3. Avoir des boutons au dessus d'un JPanel
    Par auranx dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 08/05/2012, 01h34
  4. Changer le JPanel à l'intérieur d'une JFrame
    Par Yakka dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 11/05/2011, 22h47
  5. Décalage des boutons suite à un Zoom sur JPanel
    Par fantomasmusic dans le forum 2D
    Réponses: 2
    Dernier message: 26/01/2009, 10h25

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