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 :

Gestion des JPanel-Débutant-


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut Gestion des JPanel-Débutant-
    Bonjour a tous,

    Alors voila ma question est toutes simple:
    Comment gerer plusieurs JPanel ds une meme JFrame?
    Par exemple:Mettre un JPanel ds un autre JPanel(etc)...

    Je ne suis qu'un debutant et cette question est tres importante pour moi.

    Merci de votre aide.Slt.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Un JPanel est à la fois un conteneur et à la fois un composant, comme la plupart des classes de SWING : un container est un composant pouvant contenir des composants. Un JPanel peut donc se comporter lui-même comme n'importe quel composant, comme un JButton ou un JLabel par exemple. Donc pour mettre des JPanel dans des JPanel, pas de différence avec les autres composants.

    Autrement dit, pour mettre un JPanel dans un JPanel, on utilise la méthode add(), et son emplacement et sa taille sont gérés comme n'importe quel autre composant, de préférence avec un LayoutManager. Il y une petite différence tout de même avec beaucoup de composants : la plupart des composants, comme un JLabel ou JButton, ont une taille déterminée, qui dépend du texte (et de l'image) qui y sont affichés (pour d'autres composants, comme le JSlider, la taille du curseur et de la glissière sont également connues). Si le JPanel (celui qui est dans l'autre) à lui même des composants à l'intérieur, agencés par un LayoutManager, sa taille pourra être déterminée. Mais s'il est vide, comme par exemple, un JPanel qui sert, à l'instar d'un Canvas, pour dessiner par la méthode paint(Graphics), il n'aura pas de taille : il sera nécessaire de l'indiquer toi-même, par la méthode setPreferredSize() au moins, (voir aussi setMaximumSize() et setMinimumSize()) pour que le LayoutManager du JPanel qui le contient soit capable de l'agencer correctement ; cette taille devant être évaluée en fonction de ce que paint(Graphics) dessine.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut
    Ok

    Merci pour ta reponse tres-complete.

    Maintenant voila ce qui me pose probleme:
    Je voudrais realiser une calculette comme celle la:
    Nom : 396562.png
Affichages : 853
Taille : 11,7 Ko

    Je pense qu'elle est composee de 3 JPanel:
    1*)JPanel1=0,1,2...9,"."et "=".
    2*)JPanel2=les operations.
    3*)JPanel3=l'affichage des saisis,et resultat.
    Mais voila qd je veux JP1 et JP2 se place a coter comme dans l'image je ni arrive pas comment faire ?
    Voici mon code:
    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
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class TP_calc_main extends JFrame{
     
    	TP_calc_01 pan = new TP_calc_01();
     
    	public static void main(String[] args) {
    		//Appel de la fenetre
    		new TP_calc_main();
    	}
     
    	   //Creation-Apparence de la fenetre
    		public TP_calc_main(){
     
    		this.setTitle("Calculette");//nom
    		this.setSize(500,500);//taille
    		this.setLocationRelativeTo(null);//positionnemt de la fenetre sur l'ecran.
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definit qd le programme s'arrete
    		this.setVisible(true);//rendre visible la fenetre
    		tableau01();
    		//tableau02();
     
    		}
     
    		JPanel pan1_t01 = new JPanel();
     
     
    		private void tableau01(){
    		//Placement des bouttons
    		//Bouttons chiffres
    		//def
    		GridLayout gl1 = new GridLayout();
    		gl1.setColumns(3);//def du nombre de colonne
    		gl1.setRows(4);//def du type de ligne
    		this.setLayout(gl1);
    		gl1.setHgap(5); //Cinq pixels d'espace entre les colonnes (H comme Horizontal)
    		gl1.setVgap(5); //Cinq pixels d'espace entre les lignes (V comme Vertical) 
    		//affichage tableau-chiffre
    		this.getContentPane().add(new JButton("1"));
    		this.getContentPane().add(new JButton("2"));
    		this.getContentPane().add(new JButton("3"));
    		this.getContentPane().add(new JButton("4"));
    		this.getContentPane().add(new JButton("5"));
    		this.getContentPane().add(new JButton("6"));
    		this.getContentPane().add(new JButton("7"));
    		this.getContentPane().add(new JButton("8"));
    		this.getContentPane().add(new JButton("9"));
    		this.getContentPane().add(new JButton(","));
    		this.getContentPane().add(new JButton("0"));
    		this.getContentPane().add(new JButton("="));
    		}
     
    		private void tableau02(){
    		//afichage opperation 
    		//Instanciation d'un objet JPanel
    		GridLayout gl2 = new GridLayout();
    		gl2.setColumns(1);
    		gl2.setRows(5);
    		this.setLayout(gl2);
    		gl2.setHgap(10);
    		gl2.setVgap(5);
     
    		this.getContentPane().add(new JButton("C"));
    		this.getContentPane().add(new JButton("+"));
    		this.getContentPane().add(new JButton("-"));
    		this.getContentPane().add(new JButton("*"));
    		this.getContentPane().add(new JButton("/"));
    		//Placement des boutons operation	
    	}
     
     
    }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tu peux éventuellement utiliser un BorderLayout. Il s'agit d'un Layout Manager qui a 5 emplacements de base, disposé comme ça :

    Nom : BorderLayout.png
Affichages : 839
Taille : 18,3 Ko.

    Exemple de principe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    JPanel principal = new JPanel();
    principal.setLayoutManager(new BorderLayout());
     
    JPanel jpanel1 = new JPanel();
    principal.add( jpanel1, BorderLayout.NORTH ); // pour placer la partie affichage
     
    JPanel jpanel2 = new JPanel();
    princpal.add(jpanel2, BorderLayout.CENTER ); // pour la partie clavier numérique
     
    JPanel jpanel3 = new JPanel();
    principâl.add(jpanel3, BorderLayout.EAST ); // pour la partie clavier fonction
    pour gérer les espacements entre les différents panel, tu pourrais utiliser des borders de type empty.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut
    Merci

    Mais ma principale difficulte est celle ci:
    Comment signifier a mon nouveau JPanel qu'il contient un tableau specifique?(en outre celui que j'ai ecris).

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getContentPane().add(new JButton("1"));
    Tu ajoutes le bouton directement dans le panel de la frame. Si tu veux faire un panel à part, avec les boutons du clavier numérique, il faut ajouter les boutons dans ce panel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JPanel panel = new JPanel();
     
    frame.getContentPane().add(panel); // on met panel dans le panel standard de la frame (on pourrait faire qu'il le remplace aussi, mais personnellement je préfère toujours faire un panel intermédiaire supplémentaire, plutôt que de modifier celui de la frame).
     
    panel.setLayoutManager(new BorderLayout()); // comme indiqué dans mon précédent post
     
    JPanel panel1 = new JPanel(); // on créé un autre panel, spécifique pour le clavier numérique
    panel.add(panel1, BorderLayout.CENTER);
     
    panel1.setLayout(new GridLayout(0,4,3,3)); // un grille de 4 colonnes, avec un espacement de 3 pixels
     
    panel1.add(new JButton("1"); // on ajoute le bouton dans le panel
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre éclairé
    Homme Profil pro
    :-)
    Inscrit en
    Mars 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : :-)
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2014
    Messages : 194
    Par défaut
    AHAHA!poste en mm temps

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

Discussions similaires

  1. Gestion des JPanel dans le GUI Builder de NetBeans
    Par kimjoa dans le forum Débuter
    Réponses: 2
    Dernier message: 23/07/2010, 02h19
  2. Gestion des fenetres - Débutant
    Par jlvalentin dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/08/2009, 10h37
  3. [DB400][Débutant]comprendre la gestion des processus actif
    Par horalass dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 12/12/2006, 09h26
  4. Débutant: Gestion des références
    Par todobene dans le forum Langage
    Réponses: 2
    Dernier message: 07/06/2006, 07h32
  5. Débutant : Pb gestion des chaines...
    Par SebRs dans le forum C++
    Réponses: 3
    Dernier message: 29/03/2006, 15h13

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