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

avec Java Discussion :

L'utilisation du constructeur est-il bon ?


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut L'utilisation du constructeur est-il bon ?
    Bonjour j'ai crée un inteface graphique avec 2 partie, partie gauche des boutons et partie droite un message qui dit quelle bouton on a cliquer.
    mon problème est que si je veux que le message apparait pour le premier clique je suis oblité de passer par le constructeur, je n'ai trouvé que cette solution, mais j'ai l'impression de faire répérter X fois l'interface

    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
     
    public class Fenetre extends JFrame implements ActionListener{
    	JPanel outil = new JPanel();
    	JPanel dynamic = new JPanel();
    	JButton envoyer = new JButton("envoyer");
    	JButton modifier = new JButton("modification");
     
    	JLabel message = new JLabel("demande d'enregistrement");
    	JLabel message2 = new JLabel("demande de modification");
     
    	public Fenetre()
    	{
    		this.zone();
    		this.setVisible(true);
    	}
     
    	public void zone()
    	{
    		this.setTitle("bonjour");
    		this.setSize(600,600);
    		this.setLayout(new BorderLayout());//on choisi un parton layout
    		this.getContentPane().add(outil,BorderLayout.WEST);//partie zone 1 a l'ouest
    		this.getContentPane().add(dynamic,BorderLayout.CENTER);
     
    		outil.setBackground(Color.red);
    		outil.setPreferredSize(new Dimension(200,200));
    		outil.add(envoyer);
    		outil.add(modifier);
     
    		dynamic.setBackground(Color.green);
     
    		envoyer.addActionListener(this);
    		modifier.addActionListener(this);
    		this.setVisible(true);
    	}
     
    	public void actionPerformed(ActionEvent e)
    	{
    		this.zone();
    		if(e.getSource() == envoyer)
    		{
    			dynamic.add(message);
    		}
    		if(e.getSource() == modifier)
    		{
    			dynamic.add(message2);
    			System.out.println("on demande modifier");
    		}		
    		this.setVisible(true);
    	}
     
    }
    qu'en pensez-vous ? je peux améliorer cela ?

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Déja à vue d'oeil :

    - this.zone() n'a rien à faire dans tes listener. l'appeler une seule fois dans le constructeur est suffisant. de même pour "this.setVisible(true)" que tu repète 3 fois alors que la aussi, une seule fois dans le constructeur suffit.

    - Concernant la lisibilité, à ta place j'appelerais une méthode "event()" à la fin du constructeur qui se chargerai de construire les event listener. un peu comme ca :

    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
     
    public void event() {
    		this.envoyer.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				envoyerButtonClicked();
    			}
    		});
    		this.modifier.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				modifierButtonClicked();
     
    			}
    		});
    }
     
    public void envoyerButtonClicked(){
        dynamic.add(message);
    }
     
    public void modifierButtonClick(){
        dynamic.add(message2);
        System.out.println("on demande modifier");
    }
    De cette manière tu n'a pas à te préocuper de la source, chaque boutton possède son listener.

    Pour finir, quand tu veux afficher un texte, pourquoi ne pas simplement placer un JLabel dans ton autre fenêtre et d'utiliser la méthode "setText("balabal")" ?
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Bon il se trouve que j'avais un peu de temps, du coup j'ai fais les modifications en question d'après ce que j'ai compris de ce que tu 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Fenetre extends JFrame{
     
    	private static final long serialVersionUID = 1L;
     
    	private JPanel outil = new JPanel();
    	private JPanel dynamic = new JPanel();
    	private JButton envoyer = new JButton("envoyer");
    	private JButton modifier = new JButton("modification");
     
    	//on crée un seul JLabel qui affichera le message
    	private JLabel message = new JLabel();
     
    	public Fenetre()
    	{
    		this.zone();
    		this.setVisible(true); //n'a besoin de n'être appelé qu'une seule fois
    		event(); // appèle la méthode qui va créer les listener.
    	}
     
    	public void zone()
    	{
    		this.setTitle("bonjour");
    		this.setSize(600,600);
    		this.setLayout(new BorderLayout());//on choisi un parton layout
    		this.getContentPane().add(outil,BorderLayout.WEST);//partie zone 1 a l'ouest
    		this.getContentPane().add(dynamic,BorderLayout.CENTER);
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    		outil.setBackground(Color.red);
    		outil.setPreferredSize(new Dimension(200,200));
    		outil.add(envoyer);
    		outil.add(modifier);
     
    		dynamic.setBackground(Color.green);
    		dynamic.add(message);
    	}
     
    	//ici on créer les listener pour tes deux boutons.
    	public void event() {
    			this.envoyer.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					envoyerButtonClicked();
    				}
    			});
    			this.modifier.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					modifierButtonClicked();
     
    				}
    			});
    	}
     
    	//méthode appelé lors du click sur le bouton envoyer
    	public void envoyerButtonClicked(){
    		this.message.setText("on demande envoyer");
    	    System.out.println("on demande envoyer");
    	}
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void modifierButtonClicked(){
    		this.message.setText("on demande modifier");
    	    System.out.println("on demande modifier");
    	}
     
    	//petit main rapide pour le test de ta fenetre
    	 public static void main(String[] args) {
    	        new Fenetre();
     
    	    }
     
    }
    Et de manière générale, gère tes listener de cette façon, c'est plus propre et plus fonctionnel. De plus j'ai remarqué qu'a l'execution, tes messages apparaissent 4 fois en console à chaque click...

    Ah et important aussi, pense à dire que quand ta fenetre se ferme, l'application doit quitter. Sinon tu ne vois plus rien mais ton cose continue de tourner... il suffit de rajouter cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    J'espère que ce code t'aidera à mieux comprendre les listener...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    merci beaucoup michon de ton script, cela fait 2 jours que je cherchais pourquoi lorsque je clique pour la première sur un bouton je n'avais de message, il fallait que je change la dimension de le fenêtre pour voir apparaitre quelque chose , de plus je ne connaisais pas even().
    [code]

    Je pensais que actionPerforme() servait a récupérer les listeners, mais dans quelle cas on l'ultilise ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pour finir, quand tu veux afficher un texte, pourquoi ne pas simplement placer un JLabel dans ton autre fenêtre et d'utiliser la méthode "setText("balabal")" ?
    Pour le moment j'ai mis un texte pour essayer de comprendre comment cela fonctionne.

    a quoi sert cette atrribut ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	private static final long serialVersionUID = 1L;

    sur la partie dynamique, je souahite en faite afficher un formulaire par exemple des JLabe et des JTextField.
    cette solution est t'il correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void modifierButtonClicked(){
    		this.message.setText("on demande modifier");
    	    System.out.println("on demande modifier");
               Modifier formulaire = new Modifier(); //on demande de crée un instance de Modifier," Modifier " :cette class me premettera de d'affichier un fomulaire entier de modification d'une fiche personne par exemple?
    	}
    la class Modifier doit-elle hériter de la class Fenetre afin d'utiliser ce layout?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		this.setLayout(new BorderLayout());//on choisi un parton layout
    		this.getContentPane().add(outil,BorderLayout.WEST);//partie zone 1 a l'ouest
    		this.getContentPane().add(dynamic,BorderLayout.CENTER);
    ou je doit resté dans la class Fenetre pour crée mes fomulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dynamic.add(fomulaire.add(//utilisation du bouton de la class Modifier);
    dynamic.add(fomulaire.add(//utilisation du champs de text de la class Modifier);
    .....

  5. #5
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final long serialVersionUID = 1L;
    Alors ca c'est parce que mon eclipse memet un warning si je ne le laisse pas mettre ca . Tu peux oublier , c'est pas utile en soit, juste que je supporte pas d'avoir des warning dans mon code.

    Tu peux très bien créer ton formulare comme tu le marque ici, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Modifier formulaire = new Modifier();
    Ensuite, il te suffit de créer une classe modifier qui héritera à priori de JPanel et qui contiendra alors tous tes composants de ton formulaire. Le listener de ta frame n'auras alors qu'a faire en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Modifier formulaire = new Modifier(); //déja fait
    dynamic.add(formulaire); // pour ajouter ton formulaire
    dynamic.validate(); //pour mettre a jour ton panel
    Par contre, je te conseillerai d'utiliser des noms explicite. Modifier pour une classe créant un formulaire... tu vas finir par t'y perdre. Formulaire pour une classe créant un formulaire parait déja mieux non ? Un nom explicite est important à une bonne compréhension et bonne lecture.

    Ah et pour revenir à la méthode "event()", ce n'est pas une méthode existante, la je l'ai créer. C'est juste pour un souci de clarté et donc efficacité. tu aurais pu la nommer n'importe comment en fait...

    Concernant les ActionPerformed(), si tu regarde bien, c'est exactement ce que j'utilise dans la méthode event()... pour "abonner" chaque boutton à un listener qui déclenchera l'évènement sur un click. En effet ActionPerformed et bien meilleur pour detecter les click souris queles MouseClick, MousePress ou MouseRelease event...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    j'ai renomer les variables
    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Fenetre extends JFrame{
     
    	private JPanel JP_outil = new JPanel(); //partie zone d'outils a cliquer
    	private JPanel JP_dynamic = new JPanel();//partie zone dynamique selon l'action demander
     
    	private JButton JB_creation = new JButton("creation"); //bouton envoyer
    	private JButton JB_modif = new JButton("modification");//bouton modifier
    	private JButton JB_find = new JButton ("rechercher");
     
    	//on crée un seul JLabel qui affichera le message
    	private JLabel message = new JLabel();
     
    	public Fenetre()
    	{
    		this.zone();
    		this.setVisible(true); //n'a besoin de n'être appelé qu'une seule fois
    		event(); // appèle la méthode qui va créer les listener.
    	}
     
    	public void zone()
    	{
    		this.setTitle("Repertoire Adresse");
    		this.setSize(800,600);
    		this.setLayout(new BorderLayout());//on choisi un parton layout
    		this.getContentPane().add(JP_outil,BorderLayout.WEST);//partie outil a gauche
    		this.getContentPane().add(JP_dynamic,BorderLayout.CENTER); //partie dynamique le reste
     
    		JP_outil.setBackground(new Color(251,222,150)); //couleur jaune claire
    		JP_outil.setPreferredSize(new Dimension(200,200));//couleur vert
     
    		JP_outil.add(JB_creation);//ajout bouton creation
    		JP_outil.add(JB_modif);//bouton modifier
    		JP_outil.add(JB_find);//trouver
     
    		JP_dynamic.setBackground(new Color(231,247,218));
    		JP_dynamic.add(message);
    	}
     
    	//ici on créer les listener pour tes deux boutons.
    	public void event() {
    			this.JB_creation.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_creation();
    				}
    			});
     
    			this.JB_modif.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_modif();
    				}
    			});
     
    			this.JB_find.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_find();
    				}
    			});
    	}
     
    	//méthode appelé lors du click sur le bouton envoyer
    	public void start_creation(){
    		this.message.setText("on demande envoyer");
    	    System.out.println("on demande envoyer");
    	}
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void start_modif(){
    		this.message.setText("on demande modifier");
    	    System.out.println("on demande modifier");
    	}
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void start_find(){
    		this.message.setText("on demande rechercher");
    	    System.out.println("on demande rechercher");
    	}
    	//petit main rapide pour le test de ta fenetre
    	 public static void main(String[] args) {
    	        new Fenetre();
     
    	    }
     
    }
    c'est beaucoup facile a lire comme cela ?
    pour 3 actions différente je peux crée 3 class? (1 pour chaque action?)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    cette fois ci j'ai essayer d'afficher une zone de texte a remplire lorque je clique sur le bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //la class qui va crée cette espace de formulaire texte
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
     
     
    public class AjouterRepertoire extends Fenetre{
    	protected JTextArea 	formul_adresse= new JTextArea("remplir la case adresse", 10, 50);
    	AjouterRepertoire()
    	{
    		System.out.println("preparer le formulaire");
    	}
     
    }
    et une partie de la class Fenetre qui l'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	//on crée un seul JLabel qui affichera le message
    	private JLabel message = new JLabel();
    	private JTextArea champ_adr = new JTextArea();
    comment je fait pour l'appeller le jTextArea (avec le JLabel c'était setText, ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	//méthode appelé lors du click sur le bouton envoyer
    	public void start_creation(){
    	    System.out.println("on demande d'enregistrer");
    	    AjouterRepertoire cook_form = new AjouterRepertoire();
    	    champ_adr.add(cook_form.formul_adresse);
     
    	}
    sinon si je clique plusieurs foit sur le bouton , j'ai plusieur fenêtre sur la zone dynamique

    je redonne le script 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
    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
    public class Fenetre extends JFrame{
     
    	private JPanel JP_outil = new JPanel(); //partie zone d'outils a cliquer
    	private JPanel JP_dynamic = new JPanel();//partie zone dynamique selon l'action demander
     
    	private JButton JB_creation = new JButton("creation"); //bouton envoyer
    	private JButton JB_modif = new JButton("modification");//bouton modifier
    	private JButton JB_find = new JButton ("rechercher");
     
     
    	//on crée un seul JLabel qui affichera le message
    	private JLabel message = new JLabel();
    	private JTextArea champ_adr = new JTextArea();
     
    	public Fenetre()
    	{
    		this.zone();
    		this.setVisible(true); //n'a besoin de n'être appelé qu'une seule fois
    		event(); // appèle la méthode qui va créer les listener.
    	}
     
    	public void zone() //création de la fenêtre et des 2 zones
    	{
    		this.setTitle("Repertoire Adresse");
    		this.setSize(800,600);
    		this.setLayout(new BorderLayout());//on choisi un parton layout
    		this.getContentPane().add(JP_outil,BorderLayout.WEST);//partie outil a gauche
    		this.getContentPane().add(JP_dynamic,BorderLayout.CENTER); //partie dynamique le reste
     
    		JP_outil.setBackground(new Color(251,222,150)); //couleur jaune claire
    		JP_outil.setPreferredSize(new Dimension(200,200));//couleur vert
     
    		JP_dynamic.setBackground(new Color(231,247,218));
    		JP_dynamic.add(message);
     
    		JP_outil.add(JB_creation);//ajout bouton creation
    		JP_outil.add(JB_modif);//bouton modifier
    		JP_outil.add(JB_find);//trouver
     
     
     
    	}
     
    	public void buidFormulaire()
    	{
     
    	}
     
    	//ici on créer les listener pour tes deux boutons.
    	public void event() {
    			this.JB_creation.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_creation();
    				}
    			});
     
    			this.JB_modif.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_modif();
    				}
    			});
     
    			this.JB_find.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					start_find();
    				}
    			});
    	}
     
    	//méthode appelé lors du click sur le bouton envoyer
    	public void start_creation(){
    	    System.out.println("on demande d'enregistrer");
    	    AjouterRepertoire cook_form = new AjouterRepertoire();
    	    champ_adr.add(cook_form.formul_adresse);
     
    	}
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void start_modif(){
    		this.message.setText("on demande modifier");
    	    System.out.println("on demande modifier");
    	}
     
    	//méthode appelé lors du click sur le bouton modifier
    	public void start_find(){
    		this.message.setText("on demande rechercher");
    	    System.out.println("on demande rechercher");
    	}
    	//petit main rapide pour le test de ta fenetre
    	 public static void main(String[] args) {
    	        new Fenetre();
     
    	    }
     
    }

  8. #8
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    La il faut que t pense à aller lire un peu la javadoc aussi... je peux pas tout faire non plus

    http://download.oracle.com/javase/6/docs/api/

    POur ta méthode setText(), il me semble que l'équivalent pour un JTextArea est append(). Ceci est à vérifier dans la Javadoc.

    Concernant ta fenêtre qui s'ouvre plusieurs fois, si en réalité tu souhaite qu'elle s'ouvre une seule fois, tu as plusieurs solutions :

    - tu peux desactiver le bouton qui la crée après que l'utilisateur ait cliqué via "setEnable(false)", et le remettre à true lorsque ta fenêtre sera détruite.
    - tu peux placer un booleen que tu place à "true" quand tuaffiche la fênetre, et "false" quand tu la détruira, puis faire le check lors d'un click.


    En ce qui concerne le fait de créer 3 classes pour 3 solutions différentes, et bien dans le détail je ne sais pas ce que tu souhaite faire mais a priori, oui, pourquoi pas...

    Sinon pour tes variables tu y est presque... voici 2/3 règles de nommage pour t'éclairer :

    - Les noms des classes commencent toujours par des majuscules.
    - Les noms de variables et méthodes commencent toujours par des minuscules.
    - essaye de toujours faire en sorte que le type de la variable soit explicite.

    Après à toit de voir ce que tu préfère, par exemple de bonnes notation pour un JButton seraient : jButtonTest, jbTest, jb_Test, testButton etc... à toit de trouver la notation que tu préfère et de t'y tenir, cela te simplifiera grandement la vie pour des projet plus complexe.

    ce sont les deux solutions les plus classiques je dirais. sachant que tu peux les combiner pour une raison ou une autre...

    EDIT :
    Par contre quel est le but de faire hériter ta classe "AjouterRepertoire" de ta classe fenêtre ? Car cela voudrait dire que "AjouterRepertoire" est une "Fenetre" que tu souhaite préciser en gros...

    "AjouterRepertoire" ne devrait t-il pas plutôt être un JPanel contenant les composants souhaités et qui viendrait s'ajouter dans ta "Fenêtre" ?

    Car la du coup, quand tu click sur ton bouton, tu crée un nouveau "AjouterRepertoire" à chaque fois, et comme il hérite de "Fenetre", cela te créer une nouvelle "Fenêtre". Je doute que ce soit le but rechercher en fait...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    Merci beaucoup de ton explication, ce qu'il me faut, c'est la bonne marche à suivre que je n'arrive pas encore à maitriser, c'est vrai que si on me pond le script telle qu'elle je ne pourrais pas avancer, mais si j'ai la bonne methode je pourrais progresser et chercher dans la documentation car je ne sais pas ou et quoi chercher si je ne connais pas mon problème, comme je viens de xhtml/php, l'affichage dynamique était simple puisqu'il fallait crée une page avec des includes et des sessions, avec java c'est plus difficile, c'est déjà en objet et en plus il faut se farcire toute l'inteface créer des boutons des espace de saisie du texte ...

    Mon gros problème c'est de ne pas savoir comment posé mes éléments et une fois posé ce que j'en fait avec?

    peut tu me dire si déjà ce que j'essaye de faire est juste sans s'occuper du code?

    1- je crée une JFrame

    2- dans cette JFrame je doit créer 2 JPanel (j'ai du mal a comprendre Jpanel ou Container = getContentPane()
    le 1 Panel c'est la boite a outil, c'est les 3 boutons
    le 2 panel c'est la partie dynamique ca change tous le temps en fonction de ce que l'on demande

    3- dans le JPanel outil je créer 3 JButtons qui sera placé dans le JPanel outil

    4- dans le JPanel dynamique je crée 3 class (c'est un JPanel que je dois créer et que j'ajoute des composants "bouton, label.." ou c'est 3 JPanel qui seront afficher en même temps et que je dois en cacher 2 pour voir celui qui m'interrese ?) qui sera placé dans le JPanel dynamique qui me servira
    class formulaire numéro 1 , elle me servira d'afficher des JLabel et des JTextField pour que la personne puisse remplire les champs nom prenom
    class fomulaire numéro 2 , elle me servra d'afficher le nom et prenom a modfier
    class formulaire numéro 3, elle me serviar d'afficher juste un champs pour rechercher une personne

    -5 comme tu me l' as expliqué il faut que je crée un variable static qui contiendra le dernier click d'un bouton, avec cette variable la class Fenetre sera quelle class afficher

    cette démarche est t'elle déjà correcte avant de codé?

  10. #10
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Tout d'abord, c'est sur que l'objet ne se prend pas en main en 5 sec, mais c'est assez instinctif, avec l'habitude tu auras l'impression d'écrire des phrases, tu penseras une phrase, tes doigts l'écriront :p

    sinon :

    1 - oui bon début

    2 - oui pourquoi pas. Ensuite pour t'éclairer, sâche qu'un JPanel est un JComponent qui est un Container...

    3 - oui

    4 - alors la ne crée pas 3 classe dans un panel comme tu dis... mais plutôt 3 classes héritant de JPanel. Chacune de ces classes correspondra à l'une des 3 configurations que tu souhaite pour ta partie dite dynamique. Après, tu pourra très bien créer les 3 panels au démarrage de ton programme, mais choisir lequel doit s'afficher en jouant avec les "setVisible(true)" et "setVisible(false)".

    5 - La tu as mal saisit... la classe fenêtre saura forcément quel bouton àété cliqué puisque chaque bouton dispose de son propre listener. Ce que je t'expliquait était des options possibles pour ne pas ouvrir 15 fois la même fenêtre si l'on appuie 15 fois sur le bouton. Mais si tu applique le système des panels visible et non visible, ton listener n'aur pas à les créer, mais juste à les rendre visible ou invisible suivant les cas. Donc ici tu n'auras pas de multiple fenêtre du coup...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    merci encore infiniment michon, je viens enfin de dénicher un livre complet en plus qui est devenu gratuit sur ce site (synthese swing). je pense que je vais trouver mon bonheur car tout les autre tuto ou livre n'a pas d'exemple concret à part un calculatrice .

    j'ai perdu du temps, c'est dommage que je ne le connaissais pas


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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/01/2012, 11h42
  2. [Conception] Utiliser un tableau, est-ce grave docteur?
    Par Fabrice ROUXEL 1 dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 03/04/2007, 14h43
  3. Est ce que Acces est le bon SGBD a utiliser dans mon cas?
    Par Isabelle27 dans le forum Modélisation
    Réponses: 5
    Dernier message: 21/03/2007, 21h40
  4. Réponses: 3
    Dernier message: 11/10/2006, 14h53
  5. Quel est le bon usage des fichiers "*.bpk" ?!
    Par bnadem35 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2006, 17h31

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