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

Interfaces Graphiques en Java Discussion :

Création d'un objet - interface d'accueil


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Par défaut Création d'un objet - interface d'accueil
    Bonjour à tous,
    je suis débutant en java et je souhaiterais créer une interface d'accueil. Jusque là pas de problème. Cependant je souhaiterais créer un objet (voir l'image ci dessous). Cet objet pourrait être configurable pour chaque utilisateur. Je suis arrivé à creer cet objet (je sais pas trop comment le qualifier en fait). Mais je souhaiterais que je puisse l'instancier depuis mon programme principal et c'est la que ça coince, je n'y arrive pas. Si je laisse le code tel quel, mon objet se lance dans une nouvelle JFrame et je souhaiterais qui soit insere dans la JFrame actuelle (j'ai essayé d'utilisé add(...) mais cela me provoque une erreur). Quelqu'un pourrait-il me renseigner ?
    Je vous met aussi le code que j'ai fait.

    Merci.

    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
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingConstants;
     
     
    public class BoutonAccueil extends JPanel{
    	public BoutonAccueil(){
    	int width = 150; 
    	int height = 60;
    	IntButAcc pan = new IntButAcc(); //cela crée le cadre rectangulaire qui entoure l'objet.
    	JFrame frame = new JFrame();
    	Container c = new Container();
     
    	SmallSquare sms = new SmallSquare();//cela crée le carré pour la photo
     
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(2*width,2*height);
    	frame.setLocationRelativeTo(null);
    	frame.setVisible(true);
     
    	pan.setSize(151,61);
    	pan.setBackground(Color.black);
    	pan.setLayout(new GridLayout(1, 2));
    	pan.setOpaque(false);
     
    	JPanel pan2 = new JPanel();
    	pan2.setSize(90,60);
    	pan2.setOpaque(false);
    	pan2.setLayout(new GridLayout(3,1));
     
    	JLabel lab1 = new JLabel("Nom");
    	lab1.setSize(90,20);
    	lab1.setOpaque(false);
    	lab1.setHorizontalAlignment(SwingConstants.CENTER);
    	lab1.setVerticalAlignment(SwingConstants.CENTER);
     
    	JLabel lab2 = new JLabel("Info");
    	lab2.setSize(90,20);
    	lab2.setOpaque(false);
    	lab2.setHorizontalAlignment(SwingConstants.CENTER);
    	lab2.setVerticalAlignment(SwingConstants.CENTER);
     
    	JButton but = new JButton();
    	but.setSize(90,20);
    	pan2.add(lab1);
    	pan2.add(lab2);
    	pan2.add(but);
    	pan.add(sms);
    	pan.add(pan2);
    	frame.add(c);
    	c.add(pan);
     
    	}
    }
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    J'ai relu votre message plusieurs fois. Et j'ai l'impression de louper quelque chose dans vos explications.
    Je vais donc reprendre tout en détail.
    Cependant je souhaiterais créer un objet (voir l'image ci dessous).
    Si c'est le panel d'affichage d'une personne tel qui l'est affiché dans image, pourquoi ne dispose-t-il pas d'une classe propre ?
    Vous y gagnerez en clarté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class IdentityDisplayerPanel extends JPanel{
    //TODO...
    }
    Cet objet pourrait être configurable pour chaque utilisateur.
    Getter et setter sur la classe susnommé.
    Je suis arrivé à creer cet objet (je sais pas trop comment le qualifier en fait).
    Je propose IdentityDisplayerPanel et qu'il ai une classe propre.
    Mais je souhaiterais que je puisse l'instancier depuis mon programme principal et c'est la que ça coince, je n'y arrive pas.
    Avec une classe propre le problème se résume à l'appel d'un new.
    Si je laisse le code tel quel, mon objet se lance dans une nouvelle JFrame et je souhaiterais qui soit insere dans la JFrame actuelle (j'ai essayé d'utilisé add(...) mais cela me provoque une erreur).
    J'avoue ne pas comprendre une grande partie de ce que vous avez réalisé à la fin de votre code.
    Mais supposons que je sois à votre place avec la classes susnommé réalisé :
    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
    public MyIdentityDisplayFram extends JFrame{
         public MyIdentityDisplayFrame(){
              super();
              JPanel identityListPanel = new JPanel();
              identityListPanel.setLayout(new GridLayout(3,2));
              identityListPanel.add(new IdentityDisplayerPanel ("Maman"));
              identityListPanel.add(new IdentityDisplayerPanel ("Papa"));
              identityListPanel.add(new IdentityDisplayerPanel ("Moi"));
              identityListPanel.add(new IdentityDisplayerPanel ("Ma Sœur"));
              identityListPanel.add(new IdentityDisplayerPanel ("et"));
              identityListPanel.add(new IdentityDisplayerPanel ("Mes frères"));
              this.add(identityListPanel);
    	  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	  this.setSize(2*width,3*height);
    	  this.setLocationRelativeTo(null);
         }
    }
    Si je me souviens bien une frame ne dispose que d'un seul enfant... D'où le panel intermédiaire qui prend le tout malgré tout un peu plus propre.

    Du coup, je ne vois pas l'erreur qui aurai pu survenir... Si tu peux m'en dire un peu plus.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Par défaut
    Bonsoir et merci de me répondre.

    Voici le code en entier.
    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
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Container;
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingConstants;
     
     
    public class BoutonAccueil extends JPanel{
    	public BoutonAccueil(){
    	int width = 150; 
    	int height = 60;
     
    	IntButAcc panel = new IntButAcc(); //creer un panneau en rectangle arrondi
    	JFrame frame = new JFrame();
    	Container cont = new Container();
    	SmallSquare smallSquare = new SmallSquare();
    	JPanel panelRight = new JPanel();
    	JLabel labelName = new JLabel("Nom");
    	JLabel labelInfo = new JLabel("Info");
    	JButton button = new JButton();
     
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(2*width,2*height);
    	frame.setLocationRelativeTo(null);
    	frame.setVisible(true);
     
    	panel.setSize(151,61);
    	panel.setBackground(Color.black);
    	panel.setLayout(new GridLayout(1, 2));
    	panel.setOpaque(false);
     
    	panelRight.setSize(90,60);
    	panelRight.setOpaque(false);
    	panelRight.setLayout(new GridLayout(3,1));
     
    	labelName.setSize(90,20);
    	labelName.setOpaque(false);
    	labelName.setHorizontalAlignment(SwingConstants.CENTER);
    	labelName.setVerticalAlignment(SwingConstants.CENTER);
     
    	labelInfo.setSize(90,20);
    	labelInfo.setOpaque(false);
    	labelInfo.setHorizontalAlignment(SwingConstants.CENTER);
    	labelInfo.setVerticalAlignment(SwingConstants.CENTER);
     
    	button.setSize(90,20);
    	panelRight.add(labelName);
    	panelRight.add(labelInfo);
    	panelRight.add(button);
     
    	panel.add(smallSquare);
    	panel.add(panelRight);
     
    	frame.add(cont);
    	cont.add(panel);
    	}
    	public static void main(String[] args){
    		BoutonAccueil button = new BoutonAccueil();
                    JFrame frame = new JFrame();
                    Container cont = new Container();
                    cont.add(button);
                    frame.add(cont);
                    frame.add(cont);
                    frame.setVisible(true);
                    frame.setSize(500,500);
    	}
    }
    J'ai donc créer une classe comme vous le disiez. Mon problème est quand j'appelle ma classe dans le "main", il m'affiche une nouvelle fenêtre. Je voudrais pouvoir intégrer cela dans une fenêtre existante.
    Donc actuellement, l'affichage est comme je le souhaite mais il est dans deux fenêtre séparée. Comment puis-je faire pour pouvoir tout afficher dans la même fenêtre ? Je suppose que ma fonction BoutonAccueil doit me renvoyer un JPanel (enfin une classe similaire), ce qui me permettrait de le positionner ensuite où je veux dans ma fenêtre principale (et comme vous l'expliquer dans votre dernier code). Le problème se pose vraiment au niveau de l'organisation dans ma fonction BoutonAccueil. Comment puis-je arriver à réaliser ma classe en me évitant de créer une JFrame et, je suppose, en créant à la place un JPanel (ou un Container). J'avoue être un peu perdu de ce côté là.
    Voilé j'espère avoir été peut être un peu plus clair
    Merci de votre aide.

    Arnaud

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,
    Je n'ai fait que refactoré votre 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
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingConstants;
     
    public class IdentityDisplayerPanel extends JPanel {
    	private JPanel infoPanel = new JPanel();
    	private JLabel nameLabel = new JLabel("Nom");
    	private JLabel infoLabel = new JLabel("Info");
    	private JButton displayButton = new JButton("display");
    	public IdentityDisplayerPanel(String name) {
    		this.setLayout(new GridLayout(1, 2));
    		//TODO  Change for real square of photo
    		JPanel sms = new JPanel();// cela crée le carré pour la photo
    		sms.add(new JLabel("photo"));
     
    		infoPanel.setSize(90, 60);
    		infoPanel.setLayout(new GridLayout(3, 1));
     
    		nameLabel.setText(name);
    		nameLabel.setSize(90, 20);
    		nameLabel.setHorizontalAlignment(SwingConstants.CENTER);
    		nameLabel.setVerticalAlignment(SwingConstants.CENTER);
     
     
    		infoLabel.setSize(90, 20);
    		infoLabel.setHorizontalAlignment(SwingConstants.CENTER);
    		infoLabel.setVerticalAlignment(SwingConstants.CENTER);
     
    		displayButton.setSize(90, 20);
    		infoPanel.add(nameLabel);
    		infoPanel.add(infoLabel);
    		infoPanel.add(displayButton);
    		this.add(sms);
    		this.add(infoPanel);
    	}
    }
    Plus de création de Frame dans une composant.
    Pensez : La brique ne construit pas la maison.
    Il en va de même pour l'affichage swing.
    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
    import java.awt.GridLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class MyIdentityDisplayFrame extends JFrame{
    	int width = 150;
    	int height = 60;
    		public MyIdentityDisplayFrame(){
    	          super();
    	          JPanel identityListPanel = new JPanel();
    	          identityListPanel.setLayout(new GridLayout(3,2));
    	          identityListPanel.add(new IdentityDisplayerPanel ("Maman"));
    	          identityListPanel.add(new IdentityDisplayerPanel ("Papa"));
    	          identityListPanel.add(new IdentityDisplayerPanel ("Moi"));
    	          identityListPanel.add(new IdentityDisplayerPanel ("Ma Sœur"));
    	          identityListPanel.add(new IdentityDisplayerPanel ("et"));
    	          identityListPanel.add(new IdentityDisplayerPanel ("Mes frères"));
    	          this.add(identityListPanel);
    		  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		  this.setSize(2*width,3*height);
    		  this.setLocationRelativeTo(null);
    	     }
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		new MyIdentityDisplayFrame().setVisible(true);
    	}
     
    }
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Par défaut
    Merci beaucoup. Cela marche. Je vais regardé à votre code plus en profondeur pour voir ce que je ne faisais pas correctement.

    Un grand merci !

    Arnaud

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

Discussions similaires

  1. Création dynamique d'objets ?
    Par Arthur A. dans le forum C++
    Réponses: 6
    Dernier message: 15/06/2005, 23h55
  2. [Open Inventor] Création d'un objet FILE
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 16/03/2005, 18h29
  3. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 16h07
  4. [Reflexivite]création dynamique d'objet et Héritage
    Par norkius dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 26/10/2004, 11h37
  5. Création d'un objet d'un form a l'autre
    Par Argonz dans le forum C++Builder
    Réponses: 12
    Dernier message: 03/03/2004, 10h23

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