Je travaille dans le livre « Head premier Java » et le chapitre commencé 12. Quand j'ai essayé de créer la méthode , changeButtonText()
je ne peux pas accéder à l' une des méthodes de classe à partir button
.
Pourquoi est-ce? Qu'ai-je fait de mal dans ce code?
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
JButton button = new JButton("Click Me");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(button);
frame.setSize(300,300);
frame.setVisible(true);
}
public void changeButtonText(){
button.setText("I've been clicked");
}
}
La raison pour laquelle vous ne pouvez pas accéder à la variable est en raison de son champ d' application (tutoriel sur la portée des variables: https://www.baeldung.com/java-variable-scope ).
Vous déclarez la variable JButton button
dans la main
méthode, il est donc pas accessible en dehors de celui - ci partout, même dans une méthode qui main
appelle lui - même.
Pour changeButtonText
savoir que l' button
existence variable, vous devez passer en tant que paramètres de cette méthode:
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JButton button = new JButton("Click Me");
changeButtonText(button);
}
public static void changeButtonText(JButton button){
button.setText("I've been clicked");
}
}
J'ai aussi ajouté le static
mot - clé devant la changeButtonText
méthode, car main
est également une méthode statique. Consultez ce lien par exemple pour avoir plus de détails sur la différence: https://www.geeksforgeeks.org/static-methods-vs-instance-methods-java/