nonoz
Messages postés57Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention23 juin 2004
-
17 mai 2004 à 16:47
nonoz
Messages postés57Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention23 juin 2004
-
18 mai 2004 à 21:29
bonjour,
j'aurais besoin d'un peu d'aide parce que je comprends pas bien ce qu'il faut que je fasse (enfin si faire un constructeur mais ou et comment????)
donc voila j'ai une applet qui appel une classe qui doit afficher des boutons le probleme c'est qu'il me dit ca:
"Applet1.java" : Erreur No. 300 : constructeur boutons(calc.Applet1) introuvable dans classe calc.boutons en ligne 56, colonne 31
public class boutons {
JPanel zonebouton = new JPanel();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
fabulou
Messages postés12Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 4 août 2007 17 mai 2004 à 17:03
Salut.
Dans ton applet tu construits un "boutons" avec comme parametre ton applet (le this). Alors que le constructeur de "boutons" il n'y a aucun parametre !
Tu peux remplacer ta ligne :
boutons mazoneboutons=new boutons(this);
fabulou
Messages postés12Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 4 août 2007 17 mai 2004 à 19:20
Alors, il y a en effet plusieurs choses à changer.
Tout d'abord dans ta classe Applet1, je pense que tu n'es pas obligés de mettre le null dans les fonctions add().
Ensuite, la fonction add() prend comme parametre un Objet Component. Dans ton cas tu passes une classe "boutons" qui n'est pas un Component. Il faut donc que cette classe devienne un Component, pour cela elle doit herité de par exemple un JPanel,.
Ce qui faitque ta classe "boutons" devient :
import java.awt.* ;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class boutons extends JPanel{
GridBagLayout gridBagLayout1 = new GridBagLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
public Boutons() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jButton1.setText("jButton1");
this.setLayout(gridBagLayout1);
jButton2.setText("jButton2");
this.add(jButton1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
this.add(jButton2, new GridBagConstraints(1, 0, 1, 2, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
}
}
nonoz
Messages postés57Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention23 juin 2004 18 mai 2004 à 14:58
bon donc voila jusque la ca marche, il y avait juste une petite erreur dans la classe que tu m'as fourni c'est qu'il fallait mettre un b a la place de B dans 'public boutons() {'
mais bon vu le debuggage que tu m'as fait la je suis tout content parce que ca marche.
du coup j'essaye de compliquer un peu le prog en ajouter un listener sur mes boutons qu'il lorsque l'on clique dessus appelera une fonction dans la classe principale.
}
/**Obtenir les informations d'applet*/
public String getAppletInfo() {
return "Information applet";
}
/**Obtenir les informations de paramètre*/
public String[][] getParameterInfo() {
return null;
}
/** Affichage du résultat */
public void resultat()
{
jLabel1.setText("ca marche");
}
}
// je recuepere tous les import dont j'ai besoin
import java.awt.* ;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class boutons extends JPanel implements ActionListener{
// création des éléments et du layout
GridBagLayout gridBagLayout1 = new GridBagLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
//je declare une variable dans lequel je vais mettre mon applet.
private Applet1 c;
//erreur ici
jButton1.addActionListener(this);
public boutons (Applet1 c) {
this.c =c;
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
//je mets tout l'affichage en place.
this.setLayout(gridBagLayout1);
//je donne un nom a mes boutons
jButton1.setText("1");
jButton2.setText("2");
// positionnement des éléments dans le GridbagLayout
this.add(jButton1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
this.add(jButton2, new GridBagConstraints(1, 0, 1, 2, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
}
/** gestion des événements */
public void actionPerformed (ActionEvent e)
{
//j'appele resultat qui se trouve dans l'applet
c.resultat();
}
}
//je me retrouve avec ca comme erreur:
"boutons.java" : Erreur No. 215 : déclaration de méthode incorrecte ; type retourné nécessaire en ligne 26, colonne 27
"boutons.java" : Erreur No. 203 : début de type incorrect en ligne 26, colonne 28
et ce que c'est mon action listener que je mets pas au bon endroit? si je mets :'jButton1.addActionListener(this);' en commentaire le prog fonctionne et si je rajoute c.resultat(); dans le init de la classe boutons mon label est bien modifie... mais je ne peux avoir aucune action lorsque je clique sur les boutons... :sad)
ps: j'ai laisse null dans la fonction add car cela ne semble pas avoir d'impact.
fabulou
Messages postés12Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 4 août 2007 18 mai 2004 à 21:06
Salut,
Ca marche pas parceque tu ne peut pas utiliser cette fonction a cette endroit. Je veux dire par la que tu dois mettre ta ligne :
jButton1.addActionListener(this);
dans la fonction jbInit() par exemple.
Pour ce qui est de ma classe Boutons, j'ai mis un b majuscule, car en java un nom de classe commence toujours par une majuscule ( c'est la norme fait par sun ) !