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 :

Des JPanel dans une LFrame


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut Des JPanel dans une LFrame
    Bonjour,

    Toujours débutant Java, je cherche à faire une appli test comprenant 3 "panneaux" pour y incorporer des zones de saisie.

    Pour commencer je teste ces panneaux.

    J'ai commencé par déclarer le panneau haut, je run et apparaît ma fenêtre mais le JPanel panneauHaut prend toute la fenêtre JFrame et non l'emplacement que j'avais indiqué avec setBounds.

    Je rajoute le panneau centre et là j'ai toujours ma fenêtre complète grise, et le JPanel panneauCentre s'affiche à l'emplacement du panneau haut.

    Je rajoute le panneau bas pour continuer l'essai et ce JPanel s'affiche en dessous du panneau centre mais pas en bas comme voulu par 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
     
    import java.awt.Color;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.BorderFactory;
     
    public class DecritFenetre {
     
       private JFrame fenetre;
       private JPanel panneauTitre;
       private JPanel panneauHaut;
       private JPanel panneauCentre;
       private JPanel panneauBas;
       private JPanel panneauBouton;
     
       public DecritFenetre () {
     
    	  // Description fenêtre 
    	  fenetre = new JFrame("Application Test");
    	  fenetre.setSize(1200, 700);                                 // Taille fnêtre
    	  fenetre.setResizable(false);                                // Non modifiable
    	  fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // Fermeture fenêtre par click sur la croix
    	  fenetre.setLocationRelativeTo(null);                        // Centrer la fenêtre par rapport à l'écran
     
    	  // Description panneau haut
    	  panneauHaut = new JPanel();
    	  panneauHaut.setBounds(15, 40, 1160, 200);                   // Position et taille panneau
    	  panneauHaut.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauHaut.setBackground(Color.LIGHT_GRAY);                // Couleur gris clair
    	  fenetre.add(panneauHaut);
     
    	  // Description panneau centre
    	  panneauCentre = new JPanel();
    	  panneauCentre.setBounds(15, 250, 1160, 200);                   // Position et taille panneau
    	  panneauCentre.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauCentre.setBackground(Color.LIGHT_GRAY);                // Couleur gris clair
    	  fenetre.add(panneauCentre);
     
    	  // Description panneau bas
    	  panneauBas = new JPanel();
    	  panneauBas.setBounds(15, 470, 1160, 200);                   // Position et taille panneau
    	  panneauBas.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauBas.setBackground(Color.LIGHT_GRAY);                // Couleur gris clair
    	  fenetre.add(panneauBas);
     
    	  // Affichage de la fenêtre
    	  fenetre.setVisible(true);
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class AppliTest {
     
    	private static DecritFenetre appliTest;
     
    	public static void main(String[] args) {
    	   appliTest = new DecritFenetre();
    	}
    }
    Que se passe t il ?? j'ai oublié sûrement quelque chose, mais quoi ??

    Merci de vos réponses.
    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut
    Si vous utilisez les setBound(), vous devez faire un setLayout(null)
    Mais je vous déconseille d'utiliser un layout null.
    Pour votre cas, je vous conseil plutôt de regarder du coté du borderLayout ou du boxLayout.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 21
    Points
    21
    Par défaut Bonsoir
    bonsoir, je pense que tu as raison d'utiliser le setbounds et le layout null: voici je me suis permit de modifier ton code et sa passe tel que tu le voulais :
    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
     
    import java.awt.Color;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.BorderFactory;
     
    public class DecritFenetre extends JFrame{
     
       private JPanel panneauTitre;
       private JPanel panneauHaut;
       private JPanel panneauCentre;
       private JPanel panneauBas;
       private JPanel panneauBouton;
    private JPanel panneau = new JPanel();;
     
       public DecritFenetre () {
     
    	  // Description fenêtre
     
    	  this.setSize(1200, 700);                                 // Taille fnêtre
    	  this.setResizable(false);                                // Non modifiable
    	  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // Fermeture fenêtre par click sur la croix
    	  this.setLocationRelativeTo(null);
    	  getContentPane().add(panneau);
    	  panneau.setLayout(null);
    	  // Centrer la fenêtre par rapport à l'écran
     
    	  // Description panneau haut
    	  panneauHaut = new JPanel();
    	  panneauHaut.setBounds(15, 40, 1160, 200);                   // Position et taille panneau
    	  panneauHaut.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauHaut.setBackground(Color.GREEN);                // Couleur gris clair
    	  panneau.add(panneauHaut);
     
    	  // Description panneau centre
    	  panneauCentre = new JPanel();
    	  panneauCentre.setBounds(15, 250, 1160, 200);                   // Position et taille panneau
    	  panneauCentre.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauCentre.setBackground(Color.RED);                // Couleur gris clair
    	  panneau.add(panneauCentre);
     
    	  // Description panneau bas
    	  panneauBas = new JPanel();
    	  panneauBas.setBounds(15, 470, 1160, 200);                   // Position et taille panneau
    	  panneauBas.setBorder(BorderFactory.createLineBorder(Color.BLACK));   // Bordure de couleur noire
    	  panneauBas.setBackground(Color.BLUE);                // Couleur gris clair
    	  panneau.add(panneauBas);
     
    	  // Affichage de la fenêtre
    	  setVisible(true);
       }
     
     
       public static void main(String[] args) {
       	 new DecritFenetre();
    	}
    }
     
    bonne suite et c'est un plaisir de t'aider.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut
    En quoi le setBound() est-il avantageux ?
    Il ne permet pas de redimensionner les composants correctement et ne s'adapte pas à toutes les résolutions.
    Ensuite, avec les setBound(), vous vous prenez la tête à entrer les coordonnées en brute alors que les calculs sont fait automatiquement et dynamiquement lorsque vous utilisez un layout.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Points : 21
    Points
    21
    Par défaut Bonsoir
    le but c'est de s'aider et non d'imposez les autres notre manière de développer. pour qu'une personne abandonne une chose, lui même doit-être convaincu de pourqoui il le fait. donc c'est pas un sujet pour se disputer, maintenant desolez si je vous ai frustré.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    On est ni ici pour se disputer ni ici pour imposer quelques choses tu as raison sur ce point. (Ce qui je pense n'était pas le cas ici en fait).

    Mais d'un autre coté, les layout NULL et les setBounds c'est une très mauvaise pratique et certaines des raisons ont été évoquées. Après personne ne l'interdit puisque le langage le permet...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut
    J'ai du mal a comprendre la réaction que suscite mon post.
    Loin de moi l'idée de déclencher une dispute ou d'imposer quoi que se soit, j'espère justement avoir aidé theo16, étudiant, à faire son choix quant à la méthode à utiliser pour résoudre son problème.
    Regardez un petit moment votre réaction lorsque je fais une critique de votre code. Avant de parler de frustration, une petite remise en question de soi ne vous ferez aucun mal.

    De plus, pondre un code tout fait n'apportera selon moi aucune aide à theo16 et je me demande comment sera t'il convaincu du pourquoi il le fait.
    C'est pourtant le but de cette discussion, comme vous le dites.

    Je m'excuse auprès de la modération d'avoir répondu à cette provocation.
    J'espère theo16, que vous saurez choisir la solution qui vous parait la plus adaptée à votre problème.

Discussions similaires

  1. Insérer des JPanel dans une interface JFrame
    Par 14204492 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 30/04/2013, 16h20
  2. [Swing] Superposer des JPanel dans une JFrame
    Par Babas007 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/10/2011, 18h50
  3. Insertion des composants dans une JPanel
    Par altaro dans le forum Débuter
    Réponses: 3
    Dernier message: 11/05/2009, 19h25
  4. SWING: des JPanel dans une JFrame
    Par julien.63 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/12/2007, 19h21
  5. Gestion des changement de JPanel dans une applet
    Par le Daoud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 26/06/2006, 14h32

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