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 :

[débutant] Problème JSplitPane (modif :InternalFrame)


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

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

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Salut,

    bon voilà un petit exemple, après il risque d'y avoir quelques petits problème de taille, mais c'est pas trop compliqué à résoudre.
    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
     
    public void init(){ 
            getContentPane().setBackground(new Color(255,255,255)); //couleur de font de la JFrame 
            menuFenetre = new MenuFenetre(); 
            setJMenuBar(menuFenetre); //on insére les Menus 
     
            JDesktopPane desktop = new JDesktpopPane();
            desktop.setLayout(new GridBagLayout());
     
            GridBagConstraints c = new GridBagConstraints();
     
            c.gridx = 0;
            c.gridy = 0;
            c.gridwidth = 2;
            c.gridheight = 1;
            c.weightx = 1;
            c.weighty = 1;
            c.anchor = GridBagConstraints.BOTH;
            c.fill = GridBagConstraints.BOTH;
     
            panelHaut = new Haut(); 
            desktop.add(panelHaut,c);
     
            c.gridy = 1;
            c.gridwidth = 1;
     
            partieDuBas = new PartieDuBas(); 
            desktop.add(partieDuBas,c);
     
            c.gridx = 1;
     
            panelDroite = new Droite(); 
            desktop.add(panelDroite);
     
            getContentPane().setLayout(new BorderLayout()); 
            getContentPane().add(panelHorizontal,BorderLayout.CENTER);  
        }
    Bien sût maintenant il faut que tes différents panel soient des InternalFrame. Il y a aussi une méthode qui devrait t'intéresser, c la méthode getSelectedFrame() de la classe JDesktopPane.

    Le layout utilisé est un layout qui découpe la zone d'affichage en case (comme un grille), mais ces cases peuvent être fusionnées. Tu le paramètres avec un GridBagConstraints dont voici les principales caractéristiques :
    - gridx, gridy : coordonnées de la case dans la zone d'affichage)
    - gridwidth, gridheight : nombre de case's occupées à partir de la position initiale
    - wightx, weighty : comportement du composant selon les deux axes lors de l'affichage
    - fill et anchor : comportement quand le composant et la zone d'affichage ont pas les mêmes tailles.

    Voilà, après faut faire Joujou sur weightx et weighty (valeurs comprises entre 0 et 1) et sur es tailles de tes JFrame.

    Une autre solution consisterait à ne pas mettre de Layout et à positionner toi-même tes fenêtres en fonction de leur taille et de la taille du desktop. A toi de voir ce que tu préfères.

  2. #2
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Voici désormais ma méthode init

    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
     
        public void init(){ 
        	getContentPane().setBackground(new Color(255,255,255)); //couleur de font de la JFrame 
            menuFenetre = new MenuFenetre(); 
            setJMenuBar(menuFenetre); //on insére les Menus 
     
            JDesktopPane desktop = new JDesktopPane(); 
            desktop.setLayout(new GridBagLayout()); 
     
            GridBagConstraints c = new GridBagConstraints(); 
     
            c.gridx = 0; 
            c.gridy = 0; 
            c.gridwidth = 2; 
            c.gridheight = 1; 
            c.weightx = 0.5; 
            c.weighty = 0.2; 
            c.anchor = GridBagConstraints.BOTH; 
            c.fill = GridBagConstraints.BOTH; 
     
            panelHaut = new Haut(); 
            desktop.add(panelHaut,c); 
     
            c.gridy = 1; 
            c.gridwidth = 1; 
     
            partieDuBas = new PartieDuBas(); 
            desktop.add(partieDuBas,c); 
     
            c.gridx = 1; 
     
            panelDroite = new Droite(); 
            desktop.add(panelDroite); 
     
            getContentPane().setLayout(new BorderLayout()); 
            getContentPane().add(desktop,BorderLayout.CENTER);  
     
        }
    je n'ai aucun résultat ! C'est à dire :
    Il y a la JFrame, avec le menu et c'est tout !
    D'ailleurs, le fonf de la JFrame est bleu maintenant

    J'ai modifier weightx et weighty pour voir si ça changer quelque chose !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Essaye d'ajouter le desktopPane au contentPane avant d'ajouter toutes les internaFrame (les deux dernières lignes de la méthodes a mettre apreès la ligne desktop.setLayout........). Sinon, tu peux aussi remplacer ces deux lignes par setContentPane(desktop), là aussi juste après la ligne desktop.setLayout....

  4. #4
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    au fait, j'ai fais cette modif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getContentPane().add(desktop,BorderLayout.CENTER);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getContentPane().add(panelHorizontal,BorderLayout.CENTER);


    Désolé, jai un peu de mal à comprendre tes explications ...dur dur le retour de vacances


    [hors sujet]
    Ca serai sympa si tu peux regarder ce post :
    http://www.developpez.net/forums/viewtopic.php?t=239464
    J'ai un peu de mal.... et c'est très important pour moi pour l'avancement.
    C'est encore une petite question sur le xml
    [/hors sujet]

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Pour ta modif, t'as bien fait dans la mesure où j'avais oublié de le changer. Bon ce que je voulais dire :
    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
     
    public void init(){
           getContentPane().setBackground(new Color(255,255,255)); //couleur de font de la JFrame
            menuFenetre = new MenuFenetre();
            setJMenuBar(menuFenetre); //on insére les Menus
     
            JDesktopPane desktop = new JDesktopPane();
            desktop.setLayout(new GridBagLayout());
     
            getContentPane().setLayout(new BorderLayout());
            getContentPane().add(desktop,BorderLayout.CENTER); 
     
            GridBagConstraints c = new GridBagConstraints();
     
            c.gridx = 0;
            c.gridy = 0;
            c.gridwidth = 2;
            c.gridheight = 1;
            c.weightx = 0.5;
            c.weighty = 0.2;
            c.anchor = GridBagConstraints.BOTH;
            c.fill = GridBagConstraints.BOTH;
     
            panelHaut = new Haut();
            desktop.add(panelHaut,c);
     
            c.gridy = 1;
            c.gridwidth = 1;
     
            partieDuBas = new PartieDuBas();
            desktop.add(partieDuBas,c);
     
            c.gridx = 1;
     
            panelDroite = new Droite();
            desktop.add(panelDroite);
     
     
        }
    Ensuite tu peux essayer de supprimer la ligne getContentPane().setLayout(new BorderLayout()); et voir ce que ça donne (de toute façon j'en vois pas l'utilité vu que t'ajoutes q'un seul composant dans la fenêtre) . Enfin tu peux remplacer getContentPane().add(desktop,BorderLayout.CENTER); par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setContentPane(desktop);

  6. #6
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Voici le code modifier mais le résultat est le même

    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
     
    getContentPane().setBackground(new Color(255,255,255)); //couleur de font de la JFrame 
            menuFenetre = new MenuFenetre(); 
            setJMenuBar(menuFenetre); //on insére les Menus 
     
            JDesktopPane desktop = new JDesktopPane(); 
            desktop.setLayout(new GridBagLayout()); 
     
            //getContentPane().setLayout(new BorderLayout()); 
            //getContentPane().add(desktop,BorderLayout.CENTER); 
            setContentPane(desktop); 
     
     
            GridBagConstraints c = new GridBagConstraints(); 
     
            c.gridx = 0; 
            c.gridy = 0; 
            c.gridwidth = 2; 
            c.gridheight = 1; 
            c.weightx = 0.5; 
            c.weighty = 0.2; 
            c.anchor = GridBagConstraints.BOTH; 
            c.fill = GridBagConstraints.BOTH; 
     
            panelHaut = new Haut(); 
            desktop.add(panelHaut,c); 
     
            c.gridy = 1; 
            c.gridwidth = 1; 
     
            partieDuBas = new PartieDuBas(); 
            desktop.add(partieDuBas,c); 
     
            c.gridx = 1; 
     
            panelDroite = new Droite(); 
            desktop.add(panelDroite);

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Est-ce que tu peux montrer le code d'une de tes JInternalFrame ??

  8. #8
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Une de mes JInternalFrame:

    Haut.java
    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
     
    import javax.swing.*; 
    import java.awt.*;
     
    public class Haut extends JInternalFrame {  
     
    	JLabel lab1 = new JLabel("Haut"); // insertion de texte
     
     
        public Haut(){
     
        	getContentPane().setLayout(new BorderLayout());
        	getContentPane().setBackground(new java.awt.Color(255,255,255));
        	getContentPane().add(lab1,BorderLayout.NORTH); 
     
        } 
    }
    Très simple, je te l'accorde.... mais c'est juste pour apprendre et voir coment se comporte le porgramme.... le contenu viendra plus tard !


    ps: content de te revoir dans le coin .... j'avance plus beaucoup

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Bon je pense que le problème vient de tes JInternalFrame. Dcon à essayer :
    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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class Haut extends JInternalFrame { 
     
       JLabel lab1 = new JLabel("Haut"); // insertion de texte
     
     
        public Haut(){
            //Les quatre booléens contrôlent les propriétés suivantes :
    //retaillable, fermable, maximisable, iconifiable (dsl pour ces //brabarismes)
           super("titre",true,true,true,true)
           getContentPane().setLayout(new BorderLayout());
           getContentPane().setBackground(new java.awt.Color(255,255,255));
           getContentPane().add(lab1,BorderLayout.NORTH);
           setSize(200,200);
           setVisible(true);
     
     
        }
    }
    Bon pour l'instant la taille est codée en dur, c pas joli joli, mais ça permettra déjà de voir si ça marche.

    AUtre chose : à chaque fois que t'étends une classe, oublie pas de faire le super("arguments") en première ligne de constructeur. Ici le prob c que tu construis pas vraiment la JInternalFrame, seulement les trucs qu'elle contient.

    P.S. : hier aprèm fallait que je récupére les clés d'un appart, rentrée approche.....

  10. #10
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    J'ai désormais cette erreur à la compil:

    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
     
    java.lang.IllegalArgumentException: illegal anchor value
    	at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1289)
    	at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1183)
    	at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:1499)
    	at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:1337)
    	at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:706)
    	at java.awt.Container.layout(Container.java:1020)
    	at java.awt.Container.doLayout(Container.java:1010)
    	at java.awt.Container.validateTree(Container.java:1092)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validate(Container.java:1067)
    	at java.awt.Window.show(Window.java:461)
    	at java.awt.Component.show(Component.java:1133)
    	at java.awt.Component.setVisible(Component.java:1088)
    	at Prog.main(Prog.java:29)
    Prog.java
    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
     
    public class Prog {    
     
        /** 
         * Methode principale. 
         * 
         * @param args Parametre 
         */    
        public static void main(String[] args){ 
        	/** Récupération du LookAndFeel du pc client */
            try { 
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
            } 
            catch(Exception e){e.printStackTrace();} 
            /** Lecture de la taille de l'écran */ 
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();  
            /* la fenêtre prend sa taille... */        
            MaFrame maFrame = MaFrame.getMaFrame(); 
            maFrame.init(); 
            maFrame.setSize(800,600); 
            maFrame.setLocation((screenSize.width-maFrame.getWidth())/2,(screenSize.height-maFrame.getHeight())/2);      
            maFrame.setVisible(true);        
        } 
    }

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Arrgh, en fait je t'ai refilé une erreur , dans la classe où tu crées le desktopPane, remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c.anchor = GridBagConstraints.BOTH;
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c.anchor = GridBagConstraints.CENTER;

  12. #12
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Merci Chef Ca marche !

    Il ne me manque plus qu'a jouer avec mon nouveau joujou

    Peux tu m'expliquer comment :
    Avoir Une partie du Haut qui prend toute la largueur de l'écran
    et surtout
    Avoir dans la partie du Bas deux fenetre (PartieDuBas à Gauche et Droite à droite)

    Pour le moment, j'ai :

    La fenêtre du haut en haut et la fenétre PartieDuBas en bas à gauche !
    Sur la totalité de lahauteur, à droite, j'ai la fenêtre Droite réduite

    Pour voir le résultat:
    http://www.bujinkan38.org/vince/monProg.jpg

    beaucoup

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Pour régler l'affichage, faut que tu joues sur les paramètres c.weightx et c.weighty, et ensuite sur les tailles des JInternalFrame si ça donne toujours pas ce que tu veux. Essaye aussi en enlevant le setSize dans tes JInternalFrame.

  14. #14
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    J'ai enlevé les SetSize et jouer avec les c.weightx et c.weighty.... mais,
    je n'arrive pas à travailler sur la position des InternalFrames


  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Le problème de placement vient en fait du problème de taille. Tes paramètres de placement sont corrects(gridx, gridy, gridwidth, gridheight) donc après faut jouer sur le reste. Essaye de modifier le c.anchor (les valeurs possibles sont GridBagConstrainsts.BOTH, HORIZONTAL et VERTICAL).

    Essaye aussi de mettre c.weighty à 0 pour tout le monde. Si t'as des fenêtres vides ou avec pas grand choses et que tu spécifies pas la taille, ça pose probème (les joies de l'affichage.... )

  16. #16
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Je viens d'essayer avec HORIZONTAL ou VERTICAL....
    J'ai:
    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
     
    java.lang.IllegalArgumentException: illegal anchor value
    	at java.awt.GridBagLayout.AdjustForGravity(GridBagLayout.java:1289)
    	at java.awt.GridBagLayout.adjustForGravity(GridBagLayout.java:1183)
    	at java.awt.GridBagLayout.ArrangeGrid(GridBagLayout.java:1499)
    	at java.awt.GridBagLayout.arrangeGrid(GridBagLayout.java:1337)
    	at java.awt.GridBagLayout.layoutContainer(GridBagLayout.java:706)
    	at java.awt.Container.layout(Container.java:1020)
    	at java.awt.Container.doLayout(Container.java:1010)
    	at java.awt.Container.validateTree(Container.java:1092)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validateTree(Container.java:1099)
    	at java.awt.Container.validate(Container.java:1067)
    	at java.awt.Window.show(Window.java:461)
    	at java.awt.Component.show(Component.java:1133)
    	at java.awt.Component.setVisible(Component.java:1088)
    	at Prog.main(Prog.java:29)



    Peux tu m'expliquer brièvement comment fonctionne le positionnement avec GridBagConstraints dans mon cas?


  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Les valeurs exactes sont GridBagConstrainsts.VERTICAL et GridBagConstraints.HORIZONTAL et je me suis encore mélangé les pinceaux (y'a trop de paramètres dans ce layout) c des valeurs pour c.fill.

    Bon le fonctionnement : la zone d'affichage est découpée comme un grille. Ici tu as une grille 2*2.

    - gridx, grid y : position sur la grille (dans la cas d'une fusion de plusieur cellules, faut indiquer la cellule en haut à gauche de la fusion.)
    - gridwidth, gridheight : nombre de cellules occupées en largeur et en hauteur (don permet le fusionnement). Dans ton cas, tu fusionnes les deux cellues du haut.
    - c.anchor : place du composant dans sa zone d'affichage (autrement dit sa case) : cnetrée, à gauche, en haut etc.... 9 solutions en tout).
    - c.fill : de quelle manière est redimensionné le composant quand sa taille ne correspond pas à celle de la zone d'affichage (GridBagConstrainst.BOTH, le composant est retaillé horizontalement et verticalement, GridBagConstraints.VERTICAL il est retaillé verticalement, etc)
    - weightx et weighty : comportement du retaillage de la case par rapport à la zone complète (ici le desktopPane). Valeurs comprises entre 0 et 1, 0 indiquant aucun retaillage, 1 occupation du maximum d'espace par la CASE (et pas par le composant qui occupe cette zone).

    Voilà, après comme je t'ai dit, faut faire varier les paramètres et tester un max de combinaisons jusqu'à avoir ce que tu veux (perso j'y arrive rarement du premier coup)

  18. #18
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    je n'arrive pas à comprendre comment tu déclare une grille 2*2

    ce que je comprend pour mon cas:
    - il faut une grille 2*2
    - Il faut fusionner la ligne du haut pour que L'InternalFrame du haut occuppe toute la place
    - Il faut déclarer que l'InternalFrame de gauche (partieDuBas) se trouve dans la ligne 2 colone 1
    - Il faut déclarer que l'InternalFrame de droite (droite) se trouve dans la ligne 2 colone 2

    Excyuse moi, si j'ai un peu de mal mais je n'arrive pas comprendre comment tu déclare une grille 2*2 , tu fusione et tu déclare que tel InternalFrame se trouve en ligne x colone y
    :

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Par défaut
    Ouais, c un peu chafouin. En fait, tant que t'as pas fini d'ajouter tous les éléments, il connaît pas la taille de la grille, il la calcule tout seul comme un grand lors du premier réaffichage. En ce qui concerne le positionnement des frames, tu paramètres le GridBagConstraints, et quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dektop.add(laFrame, c);
    il regarde les attributs du GridBagConstraints (ici c) pour savoir où mettre la frame. Ce qui vient d'ailleurs de me permettre de trouver le pb, en relisant le poste : quand t'ajoutes la dernière frame, t'as oublié (ou moi quand je t'ai filé le premier bout de code) de spécifier le GridBagConstraints :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    desktop.add(panelDroite,c);
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    desktop.add(panelDroite);
    et ça devrait aller.

  20. #20
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Ben.... voilà..... il se positionne parfaitement maintenant !

    il manquait juste un petit "c"

    http://www.bujinkan38.org/vince/monProgOK.jpg

    Il me reste un petit bug:
    Losque je clique sur une fenêtre, ça fait ça:

    Sur la fenetre en bas à gauche:
    http://www.bujinkan38.org/vince/clicSurGauche.jpg

    Sur la fenetre en bas à droite:
    http://www.bujinkan38.org/vince/clicSurDroite.jpg

    Pas de problème si je clic sur la fenetre du haut !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 18h41
  2. Réponses: 2
    Dernier message: 28/04/2004, 12h25
  3. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 14h40
  4. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 16h28
  5. Réponses: 11
    Dernier message: 02/09/2003, 15h20

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