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 :

graphique composant utilisation


Sujet :

AWT/Swing Java

  1. #1
    Membre averti Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Points : 331
    Points
    331
    Par défaut graphique composant utilisation
    bjr
    j ai une question bete voila une partie de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    composant = new JPanel(new GridLayout(3,3)) ;
    composant.add(new JLabel("")) ;
    composant.add(new JLabel("")) ;
    pourquoi je n ai pas le droit d ecrire ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    composant = new JPanel(new GridLayout(3,3)) ;
    JLabel case = new JLabel("") ;
    composant.add(case) ;
    composant.add(case) ;
    pourquoi je n ai pas le droit d utiliser plusieurs fois case ?

    merci

  2. #2
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Un container ne peut contenir qu'une seule fois un component... Comme dans la théorie des ensembles...

  3. #3
    Membre averti Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Claythest
    Un container ne peut contenir qu'une seule fois un component... Comme dans la théorie des ensembles...
    dans les deux cas mon container a un composant :

    ma classe s appelle direction
    composant() retourn le champ JPanel composant ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Directions dir = new Directions()
    Conntainer reservoir = fenetre.getContentPane()
    reservoir.add(dir.composant());

  4. #4
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par leopard261
    dans les deux cas mon container a un composant :
    Pas dans ton code plus haut, tu ajoutes 2 Jlabel pour le premier bout de code, et 2 fois le même JLabel dans le 2eme bout de code... bref, j'ai du mal a te suivre...

    Citation Envoyé par leopard261
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Directions dir = new Directions()
    Conntainer reservoir = fenetre.getContentPane()
    reservoir.add(dir.composant());
    La ok, il n'y a qu'un seul composant, mais où est le problème ?

    PS : pense à la balise code

  5. #5
    Membre averti Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Claythest
    Pas dans ton code plus haut, tu ajoutes 2 Jlabel pour le premier bout de code, et 2 fois le même JLabel dans le 2eme bout de code... bref, j'ai du mal a te suivre...



    La ok, il n'y a qu'un seul composant, mais où est le problème ?

    PS : pense à la balise code

    voila le 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
     
     
    package grille ; 
     
    import javax.swing.* ;
    import java.awt.GridLayout ;
     
    public class Directions {
     
    private JPanel composant ;
     
    public Directions() {
     
        composant = new JPanel(new GridLayout(3,3));
     
        composant.add(new JLabel(""));
        composant.add(new JButton(new ImageIcon("images/ArrowsH.png")));
        composant.add(new JLabel(""));
     
        composant.add(new JButton(new ImageIcon("images/ArrowsG.png")));
        composant.add(new JLabel(""));
        composant.add(new JButton(new ImageIcon("images/ArrowsD.png")));
     
        composant.add(new JLabel(""));
        composant.add(new JButton(new ImageIcon("images/ArrowsB.png")));
        composant.add(new JLabel(""));
    }
        public JComponent composant() {
         return this.composant ; }
     
    }
    --------------------
    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
     
     
    package grille ;
     
    import javax.swing.* ;
    import java.awt.* ;
     
     
    public class TestDirections { 
    public static void main (String[] args) {
     
        JFrame fen = new JFrame("C'est par où ?") ;
     
        Container reservoir = fen.getContentPane() ;
     
        Directions grille = new Directions() ;
     
        reservoir.add(grille.composant()) ;
        fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
        fen.pack() ;
        fen.setVisible(true) ;
     
    }
     
    }
    ---------------

    si j ecrit dans la classe directions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JLabel case = new JLabel("")
    composant.add(case);
        composant.add(new JButton(new ImageIcon("images/ArrowsH.png")));
        composant.add(case);
    j ai une erreur pourquoi je n ai pas le droit d utiliser plusieurs fois case

  6. #6
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    pense a utilisaer les contraint pour mettre vos composant non pas dans les meme place.
    truc du genre:
    composant.add(case,new ...constraint()) ;
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  7. #7
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par leopard261
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JLabel case = new JLabel("")
    composant.add(case);
    	composant.add(new JButton(new ImageIcon("images/ArrowsH.png")));
    	composant.add(case);
    j ai une erreur pourquoi je n ai pas le droit d utiliser plusieurs fois case
    Parce que :

    Citation Envoyé par Claythest
    Un container ne peut contenir qu'une seule fois un component... Comme dans la théorie des ensembles...
    Et je crois que tu as des gros problèmes de variables et de programmation objet...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JLabel case = new JLabel(""); // => Tu crées un objet, que tu stocke dans une variable "case".
    composant.add(case); //  => tu ajoutes ton objet dans composant
    composant.add(new JButton(new ImageIcon("images/ArrowsH.png")));
    composant.add(case); // => tu ajoutes à nouveau ton objet => erreur, ton objet est déjà présent !!!

    P.S. Et pense à la balise CODE ! Ton code sera plus lisible pour nos pauvres petits yeux (le bouton avec un # lors de l'écriture d'un message du ce forum...)


    EDIT : De plus, avec la balise code, on s'aperçoit que case est un mot clé en Java... Tu n'as donc pas le droit de l'utiliser pour nommer tes variables...

  8. #8
    Membre averti Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Points : 331
    Points
    331
    Par défaut
    mon container contient un seul composant dans les 2 cas ...
    puisque ds la main j ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Container reservoir = fen.getContentPane() ;
    add.reservoir(grille.composant()) ;

  9. #9
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Ok j'ai compris pourquoi on ne se comprends pas...

    Un JPanel est un container, donc la variable que tu nommes composant est un container, et ce container contient 2 fois le même composant...

  10. #10
    Membre averti Avatar de fantomas261
    Inscrit en
    Avril 2007
    Messages
    486
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 486
    Points : 331
    Points
    331
    Par défaut
    Citation Envoyé par Claythest
    Ok j'ai compris pourquoi on ne se comprends pas...

    Un JPanel est un container, donc la variable que tu nommes composant est un container, et ce container contient 2 fois le même composant...
    c ok maintenant

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

Discussions similaires

  1. Composants à utiliser pour une interface graphique Java
    Par nicolas.pied dans le forum Composants
    Réponses: 4
    Dernier message: 28/11/2005, 20h27
  2. [Interface graphique]Composant différents selon le PC
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 01/08/2005, 10h05
  3. [VB.NET] Composant utilisée pour changer donnée access
    Par moust dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2005, 10h44
  4. [CR10][VB6] Quels composants utiliser ?
    Par pacd dans le forum SDK
    Réponses: 1
    Dernier message: 24/11/2004, 11h12
  5. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44

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