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 :

Disposition panel et frame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut Disposition panel et frame
    Bonjour,
    je developpe un interface graphique et je galère pour disposer les éléments.

    j'ai eu l'idée de crée deux panel pour les afficher l'un en dessous de l'autre, est ce possible??

    merci pour vos répones

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut
    Salut,
    pour bien placer tes composants il faut utiliser les Layouts :
    FlowLayout place les uns a la suite des autres
    GridLayout cree un grille
    ....
    Vois dans la doc Java, ils decrivent bien les Layout.
    Avec un layout tu peux bien sur placer un panel en dessous de l'autre, par exemple en creant un gridLayout avec 1 en nb de colonnes et 2 en nb de lignes.
    A+
    Vincent

  3. #3
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    Merci,
    ca fait plusieurs jours que je me bat avec des layout, et la javadoc et les cours de developpez.com et les tutoriels de sun.

    Mais je commence vraiment avec les layout et je n'ai rien trouvé de détaillé,
    peut être connaissez vous un cours bien détaillé.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    je trouve ce cours interessant pour un debutant en swing :

    http://jca.developpez.com/fichiers/java/swing.pdf

    voila qui devrait t'aider à aprehender les principes de bases de swing...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut
    et celui la tres bien fait je trouve (base pour tous les layouts puis specifications de chacun) :
    http://java.sun.com/docs/books/tutor...out/using.html
    Bonne lecture

  6. #6
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    Salut,

    Ceci utilise un GridBagLayout pour le panel principal ("pnlRecoFV") et des BoxLayout pour les sous-panels http://java.developpez.com/faq/java/...nner_composant
    L'idée est d'afficher une boite de dialogue avec 4 panels:

    -1- le premier comprend 2 labels: m_InstrumentRecoFVInstrumentPanel
    -2- le 2e contient un label et une combobox, c'est un BoxLayout avec X_axis (il vient juste apres le 1er): pnlReco
    -3- le 3e contient un label, une combo et un champ texte, c'est un BoxLayout avec X_axis (il vient juste apres le 2e): pnlFV
    -4- le 4e contient 2 boutons, Add et Cancel et c'est un BoxLayout avec Y_axis, Add est au-dessus de Cancel, et ce panel est à droite par rapport aux autres: pnlButtonsRecoFV

    Le résultat obtenu est satisfaisant, je vous laisse regarder:
    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
     
     
    //*************** Les attributs ***************** 
     
    JPanel pnlRecoFV = new JPanel() ; 
      JLabel recoFVInstrumentLbl = new JLabel() ; 
      JLabel recommendationLbl = new JLabel() ; 
      JComboBox RecommendationBox = new JComboBox() ; 
      JLabel FairValueLbl = new JLabel() ; 
      JComboBox FairValueBox = new JComboBox() ; 
      JTextField FairValueText = new JTextField() ; 
     
    /************** Le constructeur ***************** 
     
        pnlRecoFV.setLayout(new GridBagLayout()); 
        BoxLayout.X_AXIS)); 
        m_InstrumentRecoFVInstrumentPanel = new InstrumentFVPanel(); 
        pnlReco.setLayout(new BoxLayout(pnlReco, BoxLayout.X_AXIS)); 
        pnlFV.setLayout(new BoxLayout(pnlFV, BoxLayout.X_AXIS)); 
        pnlButtonsRecoFV.setLayout(new BoxLayout(pnlButtonsRecoFV,     BoxLayout.Y_AXIS)); 
       JPanel pnlReco = new JPanel() ; 
      JPanel pnlFV = new JPanel() ; 
      JButton addButton = new JButton("Add") ; 
      JButton cancelButton = new JButton("Cancel") ; 
      JPanel pnlButtonsRecoFV = new JPanel() ; 
     
        recoFVInstrumentLbl.setText("Instrument: "); 
        recommendationLbl.setHorizontalAlignment(SwingConstants.LEFT); 
        recommendationLbl.setText("Recommendation :"); 
        FairValueLbl.setText("Fair value: "); 
        FairValueLbl.setHorizontalAlignment(SwingConstants.LEFT); 
     
        RecommendationBox.setMaximumSize(new Dimension(150, 22)); 
        RecommendationBox.setMinimumSize(new Dimension(150, 22)); 
        RecommendationBox.setPreferredSize(new Dimension(150, 22)); 
     
         pnlReco.setBorder( 
                BorderFactory.createCompoundBorder( 
                BorderFactory.createTitledBorder("Add a new recommendation"), 
                BorderFactory.createEmptyBorder(10,10,10,10))); 
     
        pnlReco.setLayout(flowLayout1); 
        flowLayout1.setAlignment(FlowLayout.LEFT); 
        pnlReco.add(recommendationLbl, null); 
        pnlReco.add(RecommendationBox, null); 
     
        FairValueBox.setMaximumSize(new Dimension(150, 22)); 
        FairValueBox.setMinimumSize(new Dimension(150, 22)); 
        FairValueBox.setPreferredSize(new Dimension(150, 22)); 
     
        FairValueText.setMaximumSize(new Dimension(150, 22)); 
        FairValueText.setMinimumSize(new Dimension(150, 22)); 
        FairValueText.setPreferredSize(new Dimension(150, 22)); 
     
        pnlFV.setBorder( 
                BorderFactory.createCompoundBorder( 
                BorderFactory.createTitledBorder("Add a new fair value"), 
                BorderFactory.createEmptyBorder(10,10,10,10))); 
      
        FlowLayout flowLayout1 = new FlowLayout() ; 
        pnlFV.setLayout(flowLayout1); 
        flowLayout10.setAlignment(FlowLayout.LEFT); 
        pnlFV.add(FairValueLbl, null); 
        pnlFV.add(FairValueBox, null); 
        pnlFV.add(FairValueText, null); 
     
        pnlButtonsRecoFV.add(addButton); 
        pnlButtonsRecoFV.add(cancelButton); 
     
        pnlRecoFV.add(m_InstrumentRecoFVInstrumentPanel, new GridBagConstraints(0, 0, 3, 1, 1.0, 0.0 
                              ,GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); 
     
        pnlRecoFV.add(pnlReco, new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0 
                             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
     
        pnlRecoFV.add(pnlFV, new GridBagConstraints(0, 2, 3, 1, 0.0, 0.0 
                             ,GridBagConstraints.SOUTH, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); 
     
        pnlRecoFV.add(pnlButtonsRecoFV, new GridBagConstraints(5, 0, 1, 5, 0.0, 1.0 
                             ,GridBagConstraints.NORTH, GridBagConstraints.VERTICAL, new Insets(5, 5, 5, 5), 0, 0)); 
     
     
        tabCompany.addTab("Recommendation & Fair Value", pnlRecoFV) ; 
     
     
     
     
    //************* La classe InstrumentFVPanel *********** 
    public class InstrumentFVPanel extends JPanel{ 
        JLabel lblInstrument = new JLabel(); 
        JLabel MainInstrument = new JLabel(); 
          FlowLayout flowLayout1 = new FlowLayout(); 
     
          public InstrumentFVPanel() { 
            try { 
              jbInit(); 
            } 
            catch(Exception ex) { 
              ex.printStackTrace(); 
            } 
          } 
          void jbInit() throws Exception { 
            lblInstrument.setHorizontalAlignment(SwingConstants.LEFT); 
            lblInstrument.setText("Instrument:"); 
            this.setLayout(flowLayout1); 
            flowLayout1.setAlignment(FlowLayout.LEFT); 
            this.add(lblInstrument, null); 
            MainInstrument.setText("Main Instrument");  
            this.add(MainInstrument, null); 
          } 
     
    }
    Attention
    - La classe InstrumentFVPanel() a été ajoutée pour des besoins qui ne concerne pas le probleme des Layout. C'est une classe qui définit un panel contenant 2 label et qui sera instanciée par plusieurs autres classes pour obtenir le même panel (réutilisation).

    Si vous avez des questions, n'hésitez pas.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Par défaut
    Si t'en as marre des Layout (et je te comprends) il existe un nullLayout qui te permet de placer tes composants où tu le désires (avec des setBounds) ... de plus si tu utilises des AGL comme netBeans (gratuit) tu peux placer tes composants a la main

    Voila voila. Cependant ca fait pas de mal de se familiariser avec les Layouts Bonne chance ^^

  8. #8
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    Il faut savoir que pour le positionnement des composants en java, 2 méthodes sont possibles:
    - setBounds()
    - LayoutManager

    La 1ère est plus simple à utiliser mais + rigide et donc moins souple, pour l'utiliser, il faut désactiver le layoutmanager en faisant: setLayout(null).

    La 2e possède des techniques très variées.

    Je te propose de regarder la classe FormulaireBounds qui utilise la méthode setBounds():

    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
     
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    public class FormulaireBounds extends JFrame {
     
    private JPanel Panel = new JPanel();
    private JPanel PanelBoutons = new JPanel();
    private JPanel PanelFields = new JPanel();
     
    private JButton Nom = new JButton("Nom");
    private JButton Tel = new JButton("Téléphone");
    private JButton Adresse = new JButton("Adresse");
     
    private JTextField NomField = new JTextField();
    private JTextField TelField = new JTextField();
    private JTextField AdresseField = new JTextField();
     
    //***************** Constructeur *****************
    public FormulaireBounds () {
       super();
       initialisation();
       listeners();
    }
     
    //***************** initialisation des composants **************
     
    public void initialisation(){
    //Définition des layout pour les panels
     
     
    Container container = this.getContentPane();
     
    container.setLayout(null);
     
    // Les boutons 
    Nom.setBounds(50,50, 140, 40);
    Tel.setBounds(50,110, 140, 40);
    Adresse.setBounds(50,170, 140, 40);
     
    container.add(Nom);
    container.add(Tel);
    container.add(Adresse);
     
    // Les champs
    NomField.setBounds(210 ,55, 200, 30); 
    TelField.setBounds(210 ,115, 200, 30); 
    AdresseField.setBounds(210 ,175, 200, 30);  
     
    container.add(NomField);
    container.add(TelField);
    container.add(AdresseField);
     
    //Affichage de la fenêtre
    this.setTitle ("Formulaire");
    this.setSize(500, 300);
    this.setVisible (true);
    this.show();
     
    //setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
     
    }
     
    //***************** Listeners ******************
     
    public void listeners() {
        System.out.println ("Hello World");
     
        Nom.addActionListener(new NomListener(NomField));
        Tel.addActionListener(new TelListener(TelField));   
        Adresse.addActionListener(new AdresseListener(AdresseField));
     
    }
     
    // ******************* main *******************
     
    public static void main (String[] args) {
     
    FormulaireBounds formulaire = new FormulaireBounds ();
     
    }
     
    }//Fin de la 1e classe
     
    //******************* Listener du bouton Nom ********************
    class NomListener implements ActionListener {
     
      JTextField textfield ;
     
       public NomListener(JTextField tf) {
          textfield = tf ;
       }
     
       public void actionPerformed(ActionEvent evt) {
          textfield.setText("Nom") ;      
       }
     
    } //Fin de la 2e classe
     
    //******************* Listener du bouton Tel ********************
     
    class TelListener implements ActionListener {
     
      JTextField textfield ;
     
       public TelListener(JTextField tf) {
          textfield = tf ;
       }
     
       public void actionPerformed(ActionEvent evt) {
          textfield.setText("Téléphone");
     
       }
     
    } //fin de 3e classe
     
    //******************* Listener du bouton Adresse *****************
     
    class AdresseListener implements ActionListener {
     
      JTextField textfield ;
     
       public AdresseListener(JTextField tf) {
          textfield = tf ;
       }
     
       public void actionPerformed(ActionEvent evt) {
          textfield.setText("Adresse");
     
       }
     
    } //fin de 4e classe

  9. #9
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    et je te propose de lire ceci également qd t'auras le tps: Projet Matisse

Discussions similaires

  1. Transférer image entre Panels et Frame
    Par maxa88 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 03/06/2015, 18h22
  2. panel et frame
    Par soujava dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 17/04/2008, 08h15
  3. problème avec deux panel sur frame
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 20/11/2007, 10h11
  4. Disposition de pseudos-frames
    Par Neoforever dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 27/08/2007, 22h42
  5. Panel dans Frame
    Par Pythonesque dans le forum wxPython
    Réponses: 2
    Dernier message: 04/07/2007, 16h12

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