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 :

Positionnement de panneaux et objet


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut Positionnement de panneaux et objet
    Bonjour,

    J'ai un onglet dans le quelle j ai un panneaux 2(blanc) qui correspond a l onglet 2(gris).
    Dans ce panneaux 2(blanc), je voudrais ajouter 3 autres panneaux(rouge, bleu, jaune) aligner verticalement et qu'il prenne toute la largeur et hauteur du panneaux 2(blanc).

    Dans chacun des ces panneaux 4(rouge), 5(bleu) et 6(jaune) je voudrais ajouter un objets dans chaque panneaux qui prennent toute la largeur et hauteur des panneaux 4(rouge), 5(bleu) et 6(jaune).

    ce qui n est pas le cas .

    J'espère avoir suffisamment bien expliquer.

    je vous montre en image le résulta que j ai actuellement et le code, pouvez vous m aider a régler sa en corrigent mon code, ou me dire ce qui me manque avec un exemple.

    PS: je suis débutant, merci de votre indulgence.



    Code java : 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
     
    /* onglet */
    ImageIcon icon2 = new ImageIcon("data/img/prog/note03.gif");   
    JTabbedPane tableauOnglets = new JTabbedPane();    
    JPanel panel2 = new JPanel();   
    panel2.setOpaque (true);    
    tableauOnglets.setOpaque (false);    
    tableauOnglets.addTab("Edition", icon2, panel2);
     
    // placement des panneaux  dans l onglet et des objets dans les panneaux
    Box ligne = Box.createVerticalBox();
     
    JPanel panel4 = new JPanel();  
    JPanel panel5 = new JPanel();
    JPanel panel6 = new JPanel(); 
      ligne.add(panel4); 
      ligne.add(panel5); 
      ligne.add(panel6);
     
      panel2.add(ligne);
     
    //postionnement du titre sur panel4 inserer dans le panel2 
    JTextField titre = (new JTextField("Titre"));
      panel4.add(titre);
     
    //postitionnement des bouttons sur panel5 inserer dans le panel2 
    JButton bouttons1 = (new JButton("Gras"));   
    JButton bouttons2 = (new JButton("Italique"));   
    JButton bouttons3 = (new JButton("Souligner")); 
    JButton bouttons4 = (new JButton("Centrer"));
      panel5.add(bouttons1);
      panel5.add(bouttons2);  
      panel5.add(bouttons3); 
      panel5.add(bouttons4); 
     
    //postionnement de l'éditeur sur panel6 inserer dans le panel2 
    JEditorPane editeur =(new JEditorPane("text/html", "texte"));
      panel6.add(editeur);

    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut Utilise un layout
    Il faut utiliser un layout : Pour ce que tu veux faire, probablement un GridLayout (un des plus simple).
    http://java.sun.com/docs/books/tutor...yout/grid.html

    Pour faire des UI plus complexe il faut utiliser un layout qui lui aussi sera plus complexe, par exemple le GridBagLayout.
    http://java.sun.com/docs/books/tutor...t/gridbag.html

    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
    public class Test {
    	public static void main(String[] args) {
    		/* onglet */
    		JFrame f = new JFrame();
    		JTabbedPane tableauOnglets = new JTabbedPane();
     
    		JPanel panel2 = new JPanel();
    		panel2.setOpaque(true);
    		tableauOnglets.setOpaque(false);
    		tableauOnglets.addTab("Edition", null, panel2);
     
    		// placement des panneaux  dans l onglet et des objets dans les panneaux
    		Box ligne = Box.createVerticalBox();
     
    		JPanel panel4 = new JPanel();
    		panel4.setLayout(new GridLayout(1, 1));
    		JPanel panel5 = new JPanel();
    		panel5.setLayout(new GridLayout(1, 4));
    		JPanel panel6 = new JPanel();
    		panel6.setLayout(new GridLayout(1, 1));
    		ligne.add(panel4);
    		ligne.add(panel5);
    		ligne.add(panel6);
     
    		panel2.add(ligne);
    		panel2.setLayout(new GridLayout(1, 1));
     
    		//postionnement du titre sur panel4 inserer dans le panel2 
    		JTextField titre = (new JTextField("Titre"));
    		panel4.add(titre);
     
    		//postitionnement des bouttons sur panel5 inserer dans le panel2 
    		JButton bouttons1 = (new JButton("Gras"));
    		JButton bouttons2 = (new JButton("Italique"));
    		JButton bouttons3 = (new JButton("Souligner"));
    		JButton bouttons4 = (new JButton("Centrer"));
    		panel5.add(bouttons1);
    		panel5.add(bouttons2);
    		panel5.add(bouttons3);
    		panel5.add(bouttons4);
     
    		//postionnement de l'éditeur sur panel6 inserer dans le panel2 
    		JEditorPane editeur = (new JEditorPane("text/html", "texte"));
    		panel6.add(editeur);
     
    		f.getContentPane().add(tableauOnglets);
    		f.setSize(400, 300);
    		f.setLocationRelativeTo(null);
    		f.setVisible(true);
    	}
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    Merci beaucoup, il y a du mieux, mais le résultat n est pas encore tout a fait celui que je souhaiterais :

    En faite :
    ==> Le titre je le souhaiterais en haut de la taille d une lettre.
    ==> Les boutons je les souhaiterais en plus petit avec des espaces entre chaque(d autre serons ajouter par la suite).
    ==> Et l éditeur prendrais le reste.

    La le résultat est plutôt partager en 3 x 33%. pour bien faire : en titre avoir 5%, le panneaux des boutons en 25 % et l éditeur le reste 70 %.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    j ai un peux revue tout sa avec GridBagLayout sa le fait mieux mais j ai encore quelque soucie l éditeur ne prend pas tout le reste du panneaux, j ai un peux du mal.

    Code java : 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
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
     
    import javax.swing.JButton;
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
     
    public class Test {
    	public static void main(String[] args) {
    		/* onglet */
    		JFrame fen = new JFrame();
    		JTabbedPane tableauOnglets = new JTabbedPane();
     
    		JPanel panel2 = new JPanel();
    		panel2.setOpaque(true);
    		tableauOnglets.setOpaque(false);
    		tableauOnglets.addTab("Edition", null, panel2);
     
    		// placement du panneaux  dans l onglet et des objets dans le panneaux		
    		panel2.setLayout(new GridBagLayout());
    		GridBagConstraints c = new GridBagConstraints();			
     
    		JTextField titre = (new JTextField("Titre")); 
     
    		JButton bouttons1 = (new JButton("Gras"));
    		//JButton bouttons2 = (new JButton("Italique"));
    		//JButton bouttons3 = (new JButton("Souligner"));
    		//JButton bouttons4 = (new JButton("Centrer")); 
     
    		JEditorPane editeur = (new JEditorPane("text/html", "texte"));
     
     
    		c.anchor = GridBagConstraints.PAGE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  0; c.gridy =  0; c.gridwidth =  10; c.gridheight = 1; c.weightx =  100;  c.weighty =  10;  
    		panel2.add(titre, c);		
     
    		//c.anchor = GridBagConstraints.LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  0; c.gridy =  1; c.gridwidth =  10; c.gridheight = 3; c.weightx =  100;  c.weighty =  30;  
    		panel2.add(bouttons1, c);
     
    		//c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  0; c.gridy =  4; c.gridwidth =  10; c.gridheight = 6; c.weightx =  100;  c.weighty =  60; 
    		panel2.add(editeur, c);
     
     
    		fen.getContentPane().add(tableauOnglets);
    		fen.setSize(400, 300);
    		fen.setLocationRelativeTo(null);
    		fen.setVisible(true);
    	}
    }

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Le GridBagLayout n'est pas dès plus simple. Il te faudra pas mal potasser et expérimenter pour pouvoir t'en servir convenablement. Bon courage.

    Je crois que ce code devrait te convenir, et j'espère qu'il t'aidera à comprendre ce très puissant et très souple, mais aussi très "lourd" Layout.

    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
    95
    96
    97
    98
    99
    100
    101
    import java.awt.Color;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import javax.swing.JButton;
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
     
     
    public class Test {
    	public static void main(String[] args) {
    		/* onglet */
    		JFrame fenetre = new JFrame();
    		JPanel panelFenetre = (JPanel)fenetre.getContentPane();
    		JTabbedPane tabbedPane = new JTabbedPane();
    		JPanel panelTabEdition = new JPanel();
    		panelTabEdition.setLayout(new GridBagLayout());
     
    		GridBagConstraints c = new GridBagConstraints();	
     
    		JLabel labelTitre = new JLabel("Titre", JLabel.CENTER); 
    		labelTitre.setOpaque(true);
    		labelTitre.setBackground(Color.RED);
    		c.weightx = 0.0;  
    		c.weighty =  0.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  0;  // numero de cellule x ou placer le composant
    		c.gridy =  0; // numero de cellule y ou placer le composant
    		c.gridwidth =  GridBagConstraints.REMAINDER; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant
    		panelTabEdition.add(labelTitre, c);
     
    		JButton btnBold = (new JButton("Gras"));
    		c.weightx = 1.0;  
    		c.weighty =  0.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  0;  // numero de cellule x ou placer le composant
    		c.gridy =  1; // numero de cellule y ou placer le composant
    		c.gridwidth =  1; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant
    		c.insets = new Insets(5,5,5,5); // ajouter un espace vide autour du composant
    		panelTabEdition.add(btnBold, c);
     
    		JButton btnItalic = (new JButton("Italique"));
    		c.weightx = 1.0;  
    		c.weighty =  0.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  1;  // numero de cellule x ou placer le composant
    		c.gridy =  1; // numero de cellule y ou placer le composant
    		c.gridwidth =  1; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant
    		panelTabEdition.add(btnItalic, c);
     
    		JButton btnUnderline = (new JButton("Souligner"));
    		c.weightx = 1.0;  
    		c.weighty =  0.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  2;  // numero de cellule x ou placer le composant
    		c.gridy =  1; // numero de cellule y ou placer le composant
    		c.gridwidth =  1; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant		
    		panelTabEdition.add(btnUnderline, c);
     
    		JButton btnCenter = (new JButton("Centrer")); 
    		c.weightx = 1.0;  
    		c.weighty =  0.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.HORIZONTAL;
    		c.gridx =  3;  // numero de cellule x ou placer le composant
    		c.gridy =  1; // numero de cellule y ou placer le composant
    		c.gridwidth =  1; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant	
    		panelTabEdition.add(btnCenter, c);
     
    		JEditorPane editeur = (new JEditorPane("text/html", "texte"));
    		c.weightx = 1.0;  
    		c.weighty =  1.0; 
    		c.anchor = GridBagConstraints.FIRST_LINE_START;
    		c.fill = GridBagConstraints.BOTH; // remplissage vertical et horizontal
    		c.gridx =  0;  // numero de cellule x ou placer le composant
    		c.gridy =  2; // numero de cellule y ou placer le composant
    		c.gridwidth =  GridBagConstraints.REMAINDER; // nombre de cellule occupé par le composant (ici toute la largeur)
    		c.gridheight = 1; // nombre de ligne occupé par le composant
    		c.insets = new Insets(0,0,0,0);
    		panelTabEdition.add(editeur, c);
     
    		tabbedPane.addTab("Edition", null, panelTabEdition);
    		panelFenetre.add(tabbedPane);
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre.setSize(400, 300);
    		fenetre.setLocationRelativeTo(null);
    		fenetre.setVisible(true);
    	}
    }
    Nota pour l'anchor, qui te permet d'indiquer la position du composant à l'intérieur de la cellule :
    --------------------------------------------------
    FIRST_LINE_START ... PAGE_START ... FIRST_LINE_END
    LINE_START ........... CENTER ..... LINE_END
    LAST_LINE_START ..... PAGE_END .... LAST_LINE_END
    --------------------------------------------------

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut Régler
    Grand merci pour ton aide visiwi c est exactement ce que je souhaiter, je vais bien observer ce que tu a fait et en tirer des leçons.

    merci encore.

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

Discussions similaires

  1. [POO] Positionnement relatif a un objet
    Par tixweb dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/07/2007, 13h52
  2. Positionnement d'objet dans une TD
    Par zooffy dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 30/01/2007, 12h45
  3. Positionner un objet dans l'espace.
    Par YmYannick dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 25/10/2006, 12h34
  4. superposer objets graphiques et les positionner
    Par trax44 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 30/05/2006, 01h54
  5. [CSS] positionner un objet
    Par car dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/08/2005, 15h31

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