Erreur dans mon code java

Fermé
khou Messages postés 14 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 22 novembre 2007 - 29 sept. 2007 à 13:51
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 29 sept. 2007 à 17:02
Bonjour,je suis entrain de programmer en java pour la gestion d'une bibliotheque jé commencé d'abord à ecrire le code pour creer une interface graphique mé il me signale une erreur jé tout fé mé j'arrive pas à la corriger s'il vous plé j'attends votre aide .voici le code:
// classes importees
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
// la classe formulaire
public class form1 extends JFrame {
JButton btnAbonnement = null;
JButton btnEmprunt = null;
JButton btnGestionLivre = null;

public form1() {
// titre de la fenetre
this.setTitle("Formulaire Accueil");
// dimensions de la fenetre
this.setSize(new Dimension(300, 100));
// creation d'un gestionnaire d'evenements
WindowAdapter win = new WinAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}; // definition win
// ce gestionnaire d'evenements va gérer les évts de la fenetre courante

this.addWindowListener(win);
// on recupere le conteneur de la fenetre
conteneur = this.getContentPane();
// on choisit un gestionnaire de mise en forme des composants dans ce conteneur
conteneur.setLayout(null);
// on cree un bouton
btnAbonnement = new JButton("Abonnement");
btnEmprunt = new JButton("Emprunt");
btnGestionLivre = new JButton("GestionLivre");
add(btnAbonnement, BorderLayout.South);
add(btnEmprunt, BorderLayout.South);
add(btnGestionlivre, BorderLayout.South);
// on associe un gsetionnaire d'evenement
ActionListener=new ActionListener();
btnAbonnement.addActionListener(new ActionListener())
btnEmprunt.addActionListener(new ActionListener())
btnGestionLivre.addActionListener(new ActionListener()) {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == Abonnement)
system.out.println(FormulaireAbonnement);
if (e.getSource() == Emprunt)
system.out.println(FormulaireEmprunt);
if (e.getSource() == GestionLivre);
}
conteneur.add(btnAbonnement);
conteneur.add(btnEmprunt);
conteneur.add(btnGestionlivre);
public static void main(Strings[] args) {
new form1().setVisible(true);
}
}
}
}


l'erreur cé au niveau de :btnAbonnement.addActionListener(new ActionListener())
A voir également:

1 réponse

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
29 sept. 2007 à 17:02
Salut,

Je suppose que tu débutes en Java ?

Plusieurs choses ne vont pas dans ton code. Depuis le début :
add(btnAbonnement, BorderLayout.South);
add(btnEmprunt, BorderLayout.South);
add(btnGestionlivre, BorderLayout.South);
Tu ne peux pas ajouter tes boutons directement à la fenêtre (il faut les ajouter à son contentPane). Remplace ces lignes par ce que tu as fait plus bas :
conteneur.add(btnAbonnement);
conteneur.add(btnEmprunt);
conteneur.add(btnGestionlivre);
Ici, il manque non seulement un nom de variable de type ActionListener mais de plus tu essaies d'instancier une interface
ActionListener=new ActionListener();
Je te conseille plutôt de virer cette ligne et faire dans l'entête de ta classe :
public class form1 extends JFrame implements ActionListener {
Les instructions suivantes souffrent de quelques problèmes :
btnAbonnement.addActionListener(new ActionListener())
btnEmprunt.addActionListener(new ActionListener())
A part le fait qu'il manque des points-virgules et au risque de me répéter, ActionListener est une inferface devant être implémentée par une nouvelle classe qui redéfinira au minimum la méthode actionPerformed(ActionEvent). Dans la mesure où je t'ai conseillé de faire implémenter ActionListener par ta JFrame, fais ceci :
btnAbonnement.addActionListener(this);
btnEmprunt.addActionListener(this);
Alors ensuite c'est du GRAND n'importe quoi. Si tu indentes ton code tu te rendras compte de l'erreur :
btnGestionLivre.addActionListener(new ActionListener()) {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource() == Abonnement)
				system.out.println(FormulaireAbonnement);
				if (e.getSource() == Emprunt)
				system.out.println(FormulaireEmprunt);
				if (e.getSource() == GestionLivre);
			}
			conteneur.add(btnAbonnement);
			conteneur.add(btnEmprunt);
			conteneur.add(btnGestionlivre);
			
			public static void main(Strings[] args) {
				new form1().setVisible(true);
			}
		}
Là aussi il manque un point-virgule mais ce n'est pas le plus choquant. Ton accolade est ouverte et fermée au mauvais endroit. La syntaxe habituelle est :
btnGestionLivre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource() == Abonnement)
				system.out.println(FormulaireAbonnement);
				if (e.getSource() == Emprunt)
				system.out.println(FormulaireEmprunt);
				if (e.getSource() == GestionLivre);
			});
			conteneur.add(btnAbonnement);
			conteneur.add(btnEmprunt);
			conteneur.add(btnGestionlivre);
			...
Dans ce même code, d'où te viennent les variables Abonnement, Emprunt et GestionLivre ? Elles ne sont pas déclarées, la source d'un ActionEvent est le nom de la variable du bouton. Dans ce cas je comprends mal pourquoi tu définis ton ActionListener global dans un bouton. Crée une méthode séparée puisqu'on vient d'implémenter l'interface ActionListener dans la JFrame :
btnGestionLivre.addActionListener(this);
...
} //Fin du constructeur
public void actionPerformed(ActionEvent e) {
				if (e.getSource() == btnAbonnementt)
				  system.out.println("Action sur Formulaire Abonnement");
				if (e.getSource() == btnEmprunt)
				  system.out.println("Action sur Formulaire Emprunt");
				if (e.getSource() == btnGestionLivre)
                                  system.out.println("Action sur Formulaire Gestion Livre");
                            }
Dans tes system.out tu as indiqué aussi deux variables qui ne sont pas définies. Et dans la troisième condition tu n'as pas mis pas d'instruction.

Alors là je ne sais pas si tu t'en rends compte mais toujours avec l'erreur d'indentation (position des accolades) tu as placé la méthode amorçe (public void main(String[])) à l'intérieur du constructeur de la JFrame ! Elle doit être au même niveau que le constructeur bien évidemment, pas à l'intérieur.

Voilà Bon courage !

PS : Un nom de classe doit TOUJOURS commencer par une lettre majuscule. Un nom de variable, propriété ou méthode doit commencer par une lettre minuscule (les majuscules sont autorisées à partir du deuxième caractère pour dinstiguer les mots).
0