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

SWT/JFace Java Discussion :

Utilisation de JButton


Sujet :

SWT/JFace Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Utilisation de JButton
    Bonjour,

    J'ai programmé un petit programme qui contient deux boutton "Parcourir", en utilisant JFileChooser.

    Mon problème se concentre sur "actionlistener et actionperformed", c'est à dire qu'il ya un conflit de commande entre le boutton "parcourir1" et le boutton "parcourir2".
    A chaque fois que je clique sur parcourir1 ou parcourir2, le fichier importé est toujours importé dans le champ texte "s_fichier1".
    C'est peut être à cause de la méthode "this", mais je n'arrive pas spécifier l'action d'un tel bouton pour une telle action.

    Voici une partie de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fichier1 = new JLabel ("    Fichier Original",SwingConstants.CENTER );
    s_fichier1 = new JTextField("Pas de fichier chargé!");
    parcourir1 = new JButton("Parcourir...");
    parcourir1.addActionListener(this);
     
    fichier2 = new JLabel ("Fichier Final",SwingConstants.CENTER );
    s_fichier2 = new JTextField("Pas de fichier chargé!");
    parcourir2 = new JButton("Parcourir...");
    parcourir2.addActionListener(this);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void actionPerformed(ActionEvent ept) {
    	//création dun nouveau filechosser
    	JFileChooser chooser = new JFileChooser();
    	//intitulé du bouton
    	chooser.setApproveButtonText("Choix du fichier..."); 
    	chooser.showOpenDialog(null);
    	//affiche la boite de dialogue
    	if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    	{
    		s_fichier1.setText(chooser.getSelectedFile().getName()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    		s_fichier2.setText(chooser.getSelectedFile().getName()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    	}
    }
    Quelqu'un saurait-il m'expliquer ce qui ne va pas ?

    Merci d'avance pour votre aide.
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Je pense que tu dois pas le savoir, mais il y a une section de la FAQ Java qui correspond exactement à ton besoin.
    Quand tu fais un parcourir1.addActionListener(this); c'est que tu associes à ton bouton la classe dans laquelle il se trouve comme ActionListener (un écouteur qui va être informé lors du clic sur un bouton).
    Or, comme tu fais ça pour tes 2 boutons, chaque fois que tu vas cliquer sur n'importe lequel des boutons, il va appeler la méthode actionPerformed() de ta classe. Dans cette fonction, tu fais un traitement pour tes 2 champs texte. Ce qu'il te faut faire pour pallier à ce problème, c'est de savoir quel bouton à appeler la méthode:
    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
    public void actionPerformed(ActionEvent ept) {
    	//création dun nouveau filechosser
    	JFileChooser chooser = new JFileChooser();
    	//intitulé du bouton
    	chooser.setApproveButtonText("Choix du fichier..."); 
    	chooser.showOpenDialog(null);
    	//affiche la boite de dialogue
    	if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    	{
    		if (ept.getSource() == parcouri1)
    		{
    		        s_fichier1.setText(chooser.getSelectedFile().getName()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    		}
    		else if (ept.getSource() == parcourir2)
    		{
    		        s_fichier2.setText(chooser.getSelectedFile().getName()); //si un fichier est selectionné, récupérer le fichier puis sont path et l'afficher dans le champs de texte
    		}
    	}
    }
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    si j'ai bien compris, une solution à ton problème :

    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
    fichier1 = new JLabel ("    Fichier Original",SwingConstants.CENTER );
            s_fichier1 = new JTextField("Pas de fichier chargé!");
            parcourir1 = new JButton("Parcourir...");
            parcourir1.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    s_fichier1.setText(RechercheFichier());
                }
            });
     
            fichier2 = new JLabel ("Fichier Final",SwingConstants.CENTER );
            s_fichier2 = new JTextField("Pas de fichier chargé!");
            parcourir2 = new JButton("Parcourir...");
            parcourir2.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    s_fichier2.setText(RechercheFichier());
                }
            });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public String RechercheFichier(){
     
            String leFichier = "Pas de fichier chargé!";
            //création dun nouveau filechosser
    	JFileChooser chooser = new JFileChooser();
    	//intitulé du bouton
    	chooser.setApproveButtonText("Choix du fichier...");
    	//affiche la boite de dialogue
    	if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
    	{		
    		leFichier = chooser.getSelectedFile().getName(); //si un fichier est selectionné, récupérer le fichier puis sont path
    	}
            return leFichier;
        }
    Créer un actionListener par bouton.

    Edit : grillé

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

Discussions similaires

  1. Comment utiliser le JButton dans un JTable
    Par hatem17 dans le forum Composants
    Réponses: 1
    Dernier message: 07/05/2009, 11h42
  2. utilisation de JButton et de plusieurs fichiers
    Par julien1451 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/04/2008, 16h27
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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