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

 Java Discussion :

Swing mise en page


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Par défaut Swing mise en page
    Bonjour,

    je démarre avec Swing et je n'arrive pas à trouver une façon de faire pour positionner des composants dans une fenêtre. Alors oui, on trouve pas mal d'exemples un peu partout, et c'est très bien, mais ils sont tellement diversifiés que je m'y perds complétement les pinceaux.

    Je ne sais pas sur quel(s) layout(s) je dois partir ?
    http://www.developpez.net/forums/d52...rents-layouts/

    Une fois j'ai les boutons qui prennent toute la largeur, une autre fois... etc...

    C'est juste "l’ossature visuelle", pas les contrôles/actions sur les composants, qui m’intéressent pour l'instant.

    Je joins une image de ce à quoi j'espère arriver.

    Si quelqu'un a une piste de départ à me donner, je le remercie pas avance.
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Je te donne un avis personnel de la chose.

    Je pars toujours sur un BorderLayout, il décompose la fenêtre en 5 secteurs
    North,South,East,West,Center. Ce qui permet à ta fenêtre d'avoir un titre un panneau centrale, éventuellement des options sur les côtés et les boutons en bas.

    Pour ce qui est des composants qui prennent toutes la place il y a une subtilité, par exemple pour mettre un bouton dans une gridLayout, d'abord placer le bouton dans un panel puis placer le panel, le bouton aura la bonne taille.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Par défaut
    Effectivement J'ai démarré avec un BorderLayout, et sur la zone EAST j'ai inséré un BoxLayout qui me permet d'aligner mes champs de saisie, et boutons, en vertical.

    Si je suis cette logique, dans la zone WEST je vais donc avoir les JButton, et dans la zone EAST un JTextArea.

    Peut forcer une taille minimum pour les boutons ?

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Voila tu as une base, il faut la retravailler pour la beauté ^_^. Mais tu as ma façon de voir les choses.
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
     
    package test;
     
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.util.Vector;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JSplitPane;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
     
    public class vueTest extends JFrame{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	private  JList pan;
    	private JLabel lab;
    	private JLabel lab2;
    	private JButton connect;
    	private JButton valid;
    	private JButton affiche;
    	private JButton download;
    	private JButton disco;
    	private JButton quitter;
    	private JTextField field;
    	private JTextField field2;
     
    	public vueTest(){
     
    		this.setLayout(new BorderLayout());
    		this.setSize(750,490);
    		this.setTitle("test Composant");
    		this.setResizable(false);
     
    		//**************
    		// la liste CENTER
    		//**************
    		Vector<String> vec = new Vector<String>();
    		for(int i = 0;i<50;i++)
    			vec.add(" ");
    		pan = new JList(vec);
    		JScrollPane scroll = new JScrollPane(pan);
     
    		//****************************
    		// les infos disponible EAST
    		//****************************
     
    		// les saisies Utilisateur
    		JPanel panInfoSaisie = new JPanel();
    		panInfoSaisie.setLayout(new GridLayout(9,2));
     
    		lab = new JLabel("   - Utilisateur :");
    		lab2 = new JLabel("  - Password :");
     
    		field = new JTextField(8);		
    		field2 = new JTextField(8);
     
    		panInfoSaisie.add(lab);
    		panInfoSaisie.add(field);
    		panInfoSaisie.add(lab2);	
    		panInfoSaisie.add(field2);
     
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
    		panInfoSaisie.add(new JLabel(""));
     
    		//************************************************
    		// LES BOUTONS + PANEL POUR LA DIMENSION DANS LA GRID
    		//************************************************
     
    		//Controleur bouton = new Controleur();
     
    		JPanel panInfo = new JPanel();
    		panInfo.setLayout(new GridLayout(7,1));
    		panInfo.setPreferredSize(new Dimension(300,100));
     
    		JPanel temp = new JPanel();
    		connect = new JButton(" Concect ");
    		//connect.addActionListener(bouton);
    		temp.add(connect);
     
    		JPanel temp2 = new JPanel();
    		valid = new JButton("    Valid    ");
    		//valid.addActionListener(bouton);
    		valid.setEnabled(false);
    		temp2.add(valid);
     
    		JPanel temp3 = new JPanel();
    		affiche = new JButton("  Affiche  ");
    		//affiche.addActionListener(bouton);
    		affiche.setEnabled(false);
    		temp3.add(affiche);
     
    		JPanel temp4 = new JPanel();
    		download = new JButton("Download");
    		//download.addActionListener(bouton);
    		download.setEnabled(false);
    		temp4.add(download);
     
    		JPanel temp5 = new JPanel();
    		disco = new JButton("    Disco    ");
    		//disco.addActionListener(bouton);
    		disco.setEnabled(false);
    		temp5.add(disco);
     
    		JPanel temp6 = new JPanel();
    		quitter = new JButton("  Quitter   ");
    		//quitter.addActionListener(bouton);
    		temp6.add(quitter);
     
    		// on ajoute de le panel grid
    		panInfo.add(temp);
    		panInfo.add(temp2);
    		panInfo.add(temp3);
    		panInfo.add(temp4);
    		panInfo.add(temp5);
    		panInfo.add(temp6);
     
    		// on ajout les 2 panneau
    		JPanel panneauControle = new JPanel();
    		panneauControle.setLayout(new GridLayout(2,1));
    		panneauControle.add(panInfoSaisie);
    		panneauControle.add(panInfo);
     
    		// on fait un split pour le jolie
    		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,null,panneauControle);
    		splitPane.setOneTouchExpandable(false);
    		splitPane.setDividerSize(10);
    		splitPane.setBackground(Color.lightGray);
    		splitPane.setResizeWeight(0.8);
     
    		// on ajoute le tout dans la fenêtre
    		this.add(scroll,BorderLayout.CENTER);
    		this.add(splitPane,BorderLayout.EAST);
     
    		//On quitte l'application quand la fenêtre est fermée
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	public JTextField getUtilisateur(){
    		return field;
    	}
     
    	public JTextField getPass(){
    		return field2;
    	}
     
     
    }
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Oui autant pour moi pour la taille des boutons tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Bouton.setPreferredSize(new Dimension(100,25));
    et tous les boutons seront à la même taille.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Par défaut
    Merci pour cet exemple qui m'apporte pas mal de réponses à mes interrogations.

    Concernant la taille définie pour un bouton, j'avais essayé la procédure que tu me donnes, mais sans résultat final.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JButton connect = new JButton("Connect");
    connect.setAlignmentX(Component.CENTER_ALIGNMENT);
    connect.setPreferredSize(new Dimension(100,25));
    * Ce bouton est dans un BoxLayout, ce dernier étant dans un BorderLayout

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

Discussions similaires

  1. Mise en page avec Swing
    Par roukgreg dans le forum Composants
    Réponses: 2
    Dernier message: 20/12/2012, 16h47
  2. [swing]Mise en page précise?
    Par bakonu dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 09/01/2006, 17h36
  3. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  4. [CR] Mise en page
    Par akolyto dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 14/10/2003, 12h22
  5. [mise en page] pour bien indenter son code
    Par bihorece dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/08/2003, 16h14

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