Création
d'entreprise
Posez votre question Signaler

Problème actionPerformed(ActionEvent e)

Absot 715Messages postés 28 octobre 2008Date d'inscription 24 avril 2012Dernière intervention - Dernière réponse le 9 déc. 2010 à 19:09
Bonjour, je suis en train de me faire une interface graphique pour un cours et j'ai un problème avec mes actions, je ne comprends pas pourquoi certaines actions fonctionnent et pas d'autres, j'ai bien pensé à ajouter une action aux variables concernées..
Mon problème est quand je clique sur Quitter dans mon menu, ça ferme bien mais quand je clique sur Connecter ou Cancel par exemple, il ne se passe rien alors que tout est analysé dans le même actionPerformed(ActionEvent e) avec des if..
Voici mon code:
package app;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.awt.event.*;


public class Interface extends JFrame implements ActionListener{
	
	// Attributs
	private PopClient pop;
	private JMenuItem quitter;
	private JTextField user = new JTextField();
	private JTextField mdp = new JTextField();
	private JTextField host = new JTextField();
	private JTextField port = new JTextField();
	private JTextArea message = new JTextArea();
	private JButton connecter;
	private JButton cancel;
	
	
		// Constructeur
		public Interface()
		{
			// Donner un titre à la fenetre
			this.setTitle("PopServer");
			// Mettre une taille à la fenetre (largeur,hauteur)
			this.setSize(350,175);
			// Empecher le redimensionnement de la fenetre
			this.setResizable(false);
			// Positionner la fenetre (x,y), null pour le centre
			this.setLocationRelativeTo(null);
			// L'application s'arrête lorsque la fenêtre est fermée.
		     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			//Fonction pour initialiser les composants
			this.init();
			// Rendre visible la fenetre
			this.setVisible(true);
		}
		
		
		
		// Fonction pour initialiser le menu
		private void init()
		{
			// Menu
			JMenuBar menubar = new JMenuBar();
			JMenu menu = new JMenu("Fichier");
			quitter = new JMenuItem("Quitter");
			// Ajouter le menuitem au menu
			menu.add(quitter);
			menubar.add(menu);
			quitter.addActionListener(this);
			// Positionner le menu en haut de la fenetre
			this.setJMenuBar(menubar);
			// Déclaration des JPanel
			JPanel panelRenseignements = new JPanel(new BorderLayout());
			JPanel panelBoutton = new JPanel();
			// Déclaration d'un GridLayout de 3 lignes et 2 colonnes
			panelRenseignements.setLayout(new GridLayout(4,3));
			panelRenseignements.add(new JLabel("User :"));
			panelRenseignements.add(user);
			panelRenseignements.add(new JLabel("Mot de passe :"));
			panelRenseignements.add(mdp);
			panelRenseignements.add(new JLabel("Host :"));
			panelRenseignements.add(host);
			panelRenseignements.add(new JLabel("Port :"));
			panelRenseignements.add(port);
			// Bouttons
			JButton connecter = new JButton("Connecter");
			JButton cancel = new JButton("Cancel");
			panelBoutton.add(connecter);
			panelBoutton.add(cancel);
			// Ajout des actions			
			cancel.addActionListener(this);
			connecter.addActionListener(this);
			// Ajout des JPanel à la JFrame
			getContentPane().add(panelRenseignements, BorderLayout.NORTH);
			getContentPane().add(panelBoutton, BorderLayout.SOUTH);
		}
		
		
		
		
		
	
		// Fonction pour vider les champs Texte
		public void clear() 
               {
			  user.setText("");
			  host.setText("");
			  port.setText("");
			  mdp.setText("");
		}
		
		
		
		
		public void actionPerformed(ActionEvent e)
   {
			if (e.getSource() == quitter)
			{
				System.exit(0);
			
			}else if (e.getSource() == connecter)
				{
					Menu fenetreMenu = new Menu();
				}else if (e.getSource() == cancel)
					{
						clear();
					}
	
   }		


}
		
		

	


Je m'acharne depuis quelques heures dessus mais bon, c'est ma première fenêtre graphique donc je pense que c'est normal de faire des erreurs.. :/
Lire la suite 

Problème actionPerformed(ActionEvent e) »

6 réponses
Réponse
+0
moins plus
Personne ne sait svp?
Ajouter un commentaire
Réponse
+0
moins plus
Moi aussi j'ai pas trouvé l'erreur, de toute façon j'utilise une méthode différente:



monButton.addActionListener(new ActionListener(){

          public void actionPerformed(ActionEvent e)
          {
                  // Traitement à lancer, sans avoir besoin des if-else
           }
});


Ajouter un commentaire
Réponse
+0
moins plus
Ta méthode fonctionne donc je vais la garder mais tu l'insers à la fin du code ou juste après la création de ces JButton?
Ajouter un commentaire
Réponse
+0
moins plus
Juste après "new JButton()".
Ajouter un commentaire
Réponse
+0
moins plus
Ah encore 2 trucs :
- Ma note ci-dessus corrige le probleme que les events n'étaient pas traités, après coup je vois que le clear fonctionne mais pas encore le 'menu' derrière le bouton connect, par contre l'appel à Menu s'effectue bien.
- J'avais aussi rajouté un champ avec insertion de strings depuis actionPerformed pour voir où ça clochait, et ai par conséquent changé les if - else if en juste des ifs, suis pas sûr si ça a eu une influence, voilà au cas où mon code :

package masterFile;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Menu;
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.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class TestBidon extends JFrame implements ActionListener{
    
    // Attributs
   // private PopClient pop;
    private JMenuItem quitter;
    private JTextField user = new JTextField();
    private JTextField mdp = new JTextField();
    private JTextField host = new JTextField();
    private JTextField port = new JTextField();
    private JTextField debugField = new JTextField();
    
    private JTextArea message = new JTextArea();
    //private JButton connecter;
    //private JButton cancel;
    JButton connecter = new JButton("Connecter");
    JButton cancel = new JButton("Cancel");
    
    
    public static void main(String[] args) {
        TestBidon bidon = new TestBidon();
    }
    
        // Constructeur
        public TestBidon()
        {
            // Donner un titre à la fenetre
            this.setTitle("PopServer");
            // Mettre une taille à la fenetre (largeur,hauteur)
            this.setSize(350,175);
            // Empecher le redimensionnement de la fenetre
            this.setResizable(false);
            // Positionner la fenetre (x,y), null pour le centre
            this.setLocationRelativeTo(null);
            // L'application s'arrête lorsque la fenêtre est fermée.
             setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Fonction pour initialiser les composants
            this.init();
            // Rendre visible la fenetre
            this.setVisible(true);
        }
        
        
        
        // Fonction pour initialiser le menu
        private void init()
        {
            // Menu
            JMenuBar menubar = new JMenuBar();
            JMenu menu = new JMenu("Fichier");
            quitter = new JMenuItem("Quitter");
            // Ajouter le menuitem au menu
            menu.add(quitter);
            menubar.add(menu);
            quitter.addActionListener(this);
            // Positionner le menu en haut de la fenetre
            this.setJMenuBar(menubar);
            // Déclaration des JPanel
            JPanel panelRenseignements = new JPanel(new BorderLayout());
            JPanel panelBoutton = new JPanel();
            // Déclaration d'un GridLayout de 3 lignes et 2 colonnes
            panelRenseignements.setLayout(new GridLayout(5,3));
            panelRenseignements.add(new JLabel("User :"));
            panelRenseignements.add(user);
            panelRenseignements.add(new JLabel("Mot de passe :"));
            panelRenseignements.add(mdp);
            panelRenseignements.add(new JLabel("Host :"));
            panelRenseignements.add(host);
            panelRenseignements.add(new JLabel("Port :"));
            panelRenseignements.add(port);
            panelRenseignements.add(new JLabel("Debug :"));
            panelRenseignements.add(debugField);
            // Bouttons
            panelBoutton.add(connecter);
            panelBoutton.add(cancel);
            // Ajout des actions            
            cancel.addActionListener(this);
            connecter.addActionListener(this);
            // Ajout des JPanel à la JFrame
            getContentPane().add(panelRenseignements, BorderLayout.NORTH);
            getContentPane().add(panelBoutton, BorderLayout.SOUTH);
        }
        
        
        
        
        
    
        // Fonction pour vider les champs Texte
        public void clear() 
               {
              user.setText("");
              host.setText("");
              port.setText("");
              mdp.setText("");
        }
        
        
        
        
        public void actionPerformed(ActionEvent e)
   {
            if (e.getSource() == quitter)
            {
                System.exit(0);
            }
            if (e.getSource() == connecter)
                {
                    debugField.setText("connect (before)");
                    Menu fenetreMenu = new Menu();
                    debugField.setText("connect (after)");
                }
            if (e.getSource() == cancel)
                    {
                        debugField.setText("clear (before)");
                        clear();
                        debugField.setText("clear (after)");
                    }
                        
   }        


}
Ajouter un commentaire
Ce document intitulé « Problème actionPerformed(ActionEvent e) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?