J'ai écrit une interface graphique dans laquelle je souhaite utiliser une méthode. Le mot clé static (ainsi que public (je n'en ai pas besoin)) pose un problème. Quand je met le mot clé static, le compilateur dit :
Syntax error on token(s), misplaced construct(s). Malheureusement, j'ai besoin de ce mot clé vu que, lors de l'utilisation de la méthode, il me dit également d'utiliser static...
J'ai donc cherché sans mon livre ce que veut dire static : indique que la méthode est une méthode de classe. Mais je ne comprend pas ceci, pouvez-vous m'aider svp?
pour mieux que vous voyez comment se placent les erreurs de la classe Chemin, je joins ci-dessous les screens : avec le mot clé static, et sans.
package ch.mathias.truelle;
publicclass Chemin {publicstaticint lequelSeraPris = 0;
publicstatic String [] prochaine;
publicstatic String [] favoriti;
favoriti = new String []{"comment m'appelle-on?"};
prochaine = new String []{"Nooon. regarde. M.A.T.H.I.A.S!"};
staticvoid rep(){// méthode qui bloque
TruelleGame.lab.setText(prochaine[lequelSeraPris]);
lequelSeraPris++;
}staticvoid quest(){// et celle-ci également
TruelleGame.lab.setText(favoriti[lequelSeraPris]);
}}package ch.mathias.truelle;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
publicclass TruelleGame {publicstatic JLabel lab = new JLabel();
publicstaticvoid main(String[] args){
JButton btnOui = new JButton("Oui");
JButton btnNon = new JButton("Non");
JButton btnOk = new JButton("Ok");
JTextField enter = new JTextField();
JPanel starter = new JPanel();
JPanel questions = new JPanel();
JPanel basBtn = new JPanel();
JFrame frame = new JFrame("Booon.");
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setSize(200, 70);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(starter);
JButton depart = new JButton("C'est parti, cliquez");
depart.setBackground(Color.red);
depart.setVisible(true);
starter.add(depart, BorderLayout.CENTER);
basBtn.add(btnOui);
basBtn.add(btnNon);
basBtn.add(btnOk);
btnOui.setVisible(false);
btnNon.setVisible(false);
lab.setVisible(true);
enter.setVisible(true);
questions.add(basBtn, BorderLayout.SOUTH);
questions.add(enter, BorderLayout.CENTER);
questions.add(lab, BorderLayout.NORTH);
enter.setPreferredSize(new Dimension (100,20));
depart.addActionListener(new ActionListener(){@Overridepublicvoid actionPerformed(ActionEvent e){
frame.setTitle("Vous avez 10 secondes pour répondre.");
frame.setSize(400,200);
frame.add(questions);
questions.setVisible(true);
starter.setVisible(false);
Chemin.quest();
}});
}}
Comme je ne savais pas si le problème était lié à la méthode elle-même, ou au reste du code, j'ai créé un projet avec méthode pour "m'entraîner".
Le plus bizarre, c'est que ça fonctionne... alors même que j'utilise le mot clé static!
package ch.mathias.elephant;
publicclass LAmethodeDell {staticint result;
staticvoid mesure(int corps, int queue){
result = corps + queue;
System.out.println("la longeur de l'éléfant est de : "+ result + " mètres.");
}}package ch.mathias.elephant;
import java.util.Scanner;
publicclass Suspens {publicstaticvoid main(String[] args){int corps = 0;
int queue = 0;
Scanner sc = new Scanner(System.in);
System.out.println("pour connaître la longueur d'un éléphant, indiquez d'abord son corps, puis sa queue. (en mètres)");
corps = sc.nextInt();
queue = sc.nextInt();
LAmethodeDell.mesure(corps, queue);
}}
15/03/2020, 15h07
Sticonik
rectification :
je viens d'essayer sans paramètre, et j'ai faux. (avec/sans static et public)
Je suis complètement perdu, car mon livre donne un exemple très clair, que je n'arrive pas à reproduire:calim2:
EDIT : ça marche finalement xD ce qui veut dire que le problème vient du reste du code non?