Problème Compilation JAVA
Résolu
Sken
-
Sken -
Sken -
Bonjour,
J'exécute le code suivant :
String v1 = f1.getText();
int Iv1 = Integer.parseInt(v1);
t1.setText(""+ConvertRouge(Iv1)+"");
dans une classe Graphique.java et j'utilise la méthode ConvertRouge suivante :
public int ConvertRouge(int Rouge){
int C = ((255 - Rouge)*100)/255;
return C;
}
située dans une classe RGB.java dans le meme dossier.
Lorsque je compile Graphique.java j'obtiens l'erreur suivante :
Graphique.java:21: cannot find symbol
method ConvertRouge(int)
Je ne comprends pas pourquoi...
Merci pour votre aide.
J'exécute le code suivant :
String v1 = f1.getText();
int Iv1 = Integer.parseInt(v1);
t1.setText(""+ConvertRouge(Iv1)+"");
dans une classe Graphique.java et j'utilise la méthode ConvertRouge suivante :
public int ConvertRouge(int Rouge){
int C = ((255 - Rouge)*100)/255;
return C;
}
située dans une classe RGB.java dans le meme dossier.
Lorsque je compile Graphique.java j'obtiens l'erreur suivante :
Graphique.java:21: cannot find symbol
method ConvertRouge(int)
Je ne comprends pas pourquoi...
Merci pour votre aide.
A voir également:
- Problème Compilation JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
6 réponses
Re,
Question bete: dans la classe ou tu fais appel a ConvertRouge(iv1), as tu bien mis au debut de ton fichier Graphique.java:
import RGB.java ? :)
Question bete: dans la classe ou tu fais appel a ConvertRouge(iv1), as tu bien mis au debut de ton fichier Graphique.java:
import RGB.java ? :)
Bonjour,
Il nous faudrait le code de la classe Graphique.java, et surtout la ligne 21 sur laquelle se produit l'erreur.
Et également l'erreur complète.
Il nous faudrait le code de la classe Graphique.java, et surtout la ligne 21 sur laquelle se produit l'erreur.
Et également l'erreur complète.
import java.awt.*;
import java.awt.event.*;
public class Graphique extends Frame{
private static final int LARGEUR = 800;
private static final int HAUTEUR = 400;
private Button RGBtoCMY = new Button("RGBtoCMY");
private Button CMYtoRGB = new Button("CMYtoRGB");
private CercleCouleur C1;
private Panel p1,p2,p3,p4;
private TextArea f1,f2,f3,t1,t2,t3;
private Label l;
public class Action1 implements ActionListener{
public void actionPerformed(ActionEvent e1){
String v1 = f1.getText();
int Iv1 = Integer.parseInt(v1);
t1.setText(""+ConvertRouge(Iv1)+"");
String v2 = f2.getText();
t2.setText(v2);
String v3 = f3.getText();
t3.setText(v3);
}
}
public class Action2 implements ActionListener{
public void actionPerformed(ActionEvent e2){
String w1 = t1.getText();
f1.setText(w1);
String w2 = t2.getText();
f2.setText(w2);
String w3 = t3.getText();
f3.setText(w3);
}
}
public class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
public Graphique(){
addWindowListener(new MyWindowListener());
setSize(LARGEUR,HAUTEUR);
setBackground(Color.gray);
setForeground(Color.black);
setLayout(new GridLayout(3,3));
f1 = new TextArea();
//f1.setEditable(false);
f2 = new TextArea();
//f2.setEditable(false);
f3 = new TextArea();
//f3.setEditable(false);
t1 = new TextArea();
//t1.setEditable(false);
t2 = new TextArea();
//t2.setEditable(false);
t3 = new TextArea();
//t3.setEditable(false);
Panel p1 = new Panel(new GridLayout(1,3));
p1.add(f1);
p1.add(f2);
p1.add(f3);
Panel p2 = new Panel(new GridLayout(1,3));
p2.add(t1);
p2.add(t2);
p2.add(t3);
add(p1);
RGBtoCMY.addActionListener(new Action1());
add(RGBtoCMY);
Panel p3 = new Panel(new BorderLayout());
Label l = new Label("Ceci est la couleur en RGB : ");
p3.add(l, BorderLayout.CENTER);
add(p3);
Panel p4 = new Panel(new BorderLayout());
C1 = new CercleCouleur(Color.green, 135, 10);
p4.add(C1, BorderLayout.CENTER);
add(p4);
add(p2);
CMYtoRGB.addActionListener(new Action2());
add(CMYtoRGB);
//pack();
setVisible(true);
}
public static void main(String[]args){
Graphique G = new Graphique();
System.out.println(G);
}
}
Et pour le code de l'erreur :
Graphique.java.21: cannot find symbol
symbol: method ConvertRouge(int)
location: class Graphique.Action1
t1.setText(""+ConvertRouge+""); (c'est là que se trouve l'erreur)
Voilà.
import java.awt.event.*;
public class Graphique extends Frame{
private static final int LARGEUR = 800;
private static final int HAUTEUR = 400;
private Button RGBtoCMY = new Button("RGBtoCMY");
private Button CMYtoRGB = new Button("CMYtoRGB");
private CercleCouleur C1;
private Panel p1,p2,p3,p4;
private TextArea f1,f2,f3,t1,t2,t3;
private Label l;
public class Action1 implements ActionListener{
public void actionPerformed(ActionEvent e1){
String v1 = f1.getText();
int Iv1 = Integer.parseInt(v1);
t1.setText(""+ConvertRouge(Iv1)+"");
String v2 = f2.getText();
t2.setText(v2);
String v3 = f3.getText();
t3.setText(v3);
}
}
public class Action2 implements ActionListener{
public void actionPerformed(ActionEvent e2){
String w1 = t1.getText();
f1.setText(w1);
String w2 = t2.getText();
f2.setText(w2);
String w3 = t3.getText();
f3.setText(w3);
}
}
public class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
public Graphique(){
addWindowListener(new MyWindowListener());
setSize(LARGEUR,HAUTEUR);
setBackground(Color.gray);
setForeground(Color.black);
setLayout(new GridLayout(3,3));
f1 = new TextArea();
//f1.setEditable(false);
f2 = new TextArea();
//f2.setEditable(false);
f3 = new TextArea();
//f3.setEditable(false);
t1 = new TextArea();
//t1.setEditable(false);
t2 = new TextArea();
//t2.setEditable(false);
t3 = new TextArea();
//t3.setEditable(false);
Panel p1 = new Panel(new GridLayout(1,3));
p1.add(f1);
p1.add(f2);
p1.add(f3);
Panel p2 = new Panel(new GridLayout(1,3));
p2.add(t1);
p2.add(t2);
p2.add(t3);
add(p1);
RGBtoCMY.addActionListener(new Action1());
add(RGBtoCMY);
Panel p3 = new Panel(new BorderLayout());
Label l = new Label("Ceci est la couleur en RGB : ");
p3.add(l, BorderLayout.CENTER);
add(p3);
Panel p4 = new Panel(new BorderLayout());
C1 = new CercleCouleur(Color.green, 135, 10);
p4.add(C1, BorderLayout.CENTER);
add(p4);
add(p2);
CMYtoRGB.addActionListener(new Action2());
add(CMYtoRGB);
//pack();
setVisible(true);
}
public static void main(String[]args){
Graphique G = new Graphique();
System.out.println(G);
}
}
Et pour le code de l'erreur :
Graphique.java.21: cannot find symbol
symbol: method ConvertRouge(int)
location: class Graphique.Action1
t1.setText(""+ConvertRouge+""); (c'est là que se trouve l'erreur)
Voilà.
Il y a des erreurs dans ton code.
Tu déclares une première class Graphique et sans la fermer avec un }, tu déclares à l'intérieur de celle-ci une autre classe, déjà ça ne fonctionne pas.
Et encore tu as déclaré toutes tes classes Action, à l'intérieur de la classe Graphique.java.
Pour que cela soit plus simple, il est préférable de déclarer un fichier .java par classe, et surtout ne pas incorporer le code d'une classe dans une autre, ça ne peut pas fonctionner.
Tu déclares une première class Graphique et sans la fermer avec un }, tu déclares à l'intérieur de celle-ci une autre classe, déjà ça ne fonctionne pas.
Et encore tu as déclaré toutes tes classes Action, à l'intérieur de la classe Graphique.java.
Pour que cela soit plus simple, il est préférable de déclarer un fichier .java par classe, et surtout ne pas incorporer le code d'une classe dans une autre, ça ne peut pas fonctionner.
Mon parenthèsage est bon (toutes les accolades sont férmées si tu regardes bien) et il n'y a aucun problème en java à déclarer des classes à l'intérieur d'une autre classe, elles seront juste compilées en Graphique$Action1.class (par exemple). De plus, sans la méthode Convert tout compilait et s'exécutait très bien, donc je ne pense pas que le problème vienne de là ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non tes parenthèses ne sont pas bonnes :
public class Graphique extends Frame{
private static final int LARGEUR = 800;
private static final int HAUTEUR = 400;
private Button RGBtoCMY = new Button("RGBtoCMY");
private Button CMYtoRGB = new Button("CMYtoRGB");
private CercleCouleur C1;
private Panel p1,p2,p3,p4;
private TextArea f1,f2,f3,t1,t2,t3;
private Label l;
public class Action1 implements ActionListener{
Tu m'excuseras mais ta classe n'est pas fermée avant la deuxième ... et toutes tes classes sont déclarées dans la première
public class Graphique extends Frame{
private static final int LARGEUR = 800;
private static final int HAUTEUR = 400;
private Button RGBtoCMY = new Button("RGBtoCMY");
private Button CMYtoRGB = new Button("CMYtoRGB");
private CercleCouleur C1;
private Panel p1,p2,p3,p4;
private TextArea f1,f2,f3,t1,t2,t3;
private Label l;
public class Action1 implements ActionListener{
Tu m'excuseras mais ta classe n'est pas fermée avant la deuxième ... et toutes tes classes sont déclarées dans la première
Ouais ba ca risque pas de fonctionner comme ca ^^.
Ta methode fait partie de l'objet RGB. Tu connais l'objet RGB, mais pour connaitre ce qu'il y a dans l'objet RGB, encore faudrait il pouvoir y acceder non ? ;)
Donc ce qu'il faut que tu fasses:
1) Ton appel doit se faire comme ceci:
2) Etant donne que tu veux appeler une fonction d'une classe sans en avoir instancie l'objet, il te faudra changer le prototype de ta fonction en rajoutant le mot cle "static":
Voila ca devrait marcher maintenant ;)
Ta methode fait partie de l'objet RGB. Tu connais l'objet RGB, mais pour connaitre ce qu'il y a dans l'objet RGB, encore faudrait il pouvoir y acceder non ? ;)
Donc ce qu'il faut que tu fasses:
1) Ton appel doit se faire comme ceci:
RGB.ConvertRouge(Iv1)
2) Etant donne que tu veux appeler une fonction d'une classe sans en avoir instancie l'objet, il te faudra changer le prototype de ta fonction en rajoutant le mot cle "static":
public static int ConvertRouge(int Rouge){
Voila ca devrait marcher maintenant ;)
Je pourrais avoir le prototype de ta classe RGB et ta fonction stp ?
public class RGB extends Couleur{
public RGB(int R,int G,int B){
super(R,G,B);
}
public void additionner(int Red,int Green,int Blue){
if ((Red<0 || Green <0 || Blue<0) || (Red>(255-x) || Green>(255-y) || Blue >(255-y))){
System.out.println("coucou le bug");
}
else{
x+=Red;
y+= Green;
z+=Blue;
}
}
public double distance(RGB c){
double distance;
distance = Math.sqrt(Math.pow(this.x-c.x,2)+Math.pow(this.y-c.y,2)+Math.pow(this.z-c.z,2));
return distance;
}
public int ConvertRouge(int Rouge){
int C = ((255 - Rouge)*100)/255;
return C;
}
public void ConvertGreen(int Green){
int M = ((255 - Green)*100)/255;
}
public void ConvertBleu(int Bleu){
int Y = ((255 - Bleu)*100)/255;
}
public String toString(){
String s="La composante rouge est "+x+"\n"+"La composante verte est "+y+"\n"+"La composante Bleu est "+z+"\n";
return s;
}
}
Voilà