Problème actionPerformed(ActionEvent e) - Java - Programmation
Marsh Posté le 29-10-2009 à 01:51:05
Facile:
Code : |
Tu redéclares en fait deux variables LOCALES qui portent le même nom que tes variables d'instance "connecter" et "cancel". Evidemment ces variables locales prennent le dessus et le compilateur ne va rien te dire puisque c'est autorisé. Le problème c'est que dans le code de ta méthode actionPerformed, tu ne testes pas les mêmes variables, tu testes en fait les variables d'instance que tu n'as pas initialisées.
Tu dois donc juste enlever ces redéclarations:
Code : |
Si tu veux être certain que ce sont bien les variables d'instance qui sont assignées, tu peux même écrire:
Code : |
À part cela, une classe qui s'appelle "Interface", c'est perturbant.
Marsh Posté le 28-10-2009 à 21:18:44
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..