Débutant problème. Ne peut pas accéder les méthodes d'instance de classe en dehors principale méthode?

NMard:

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");
    }
}
AntoineB :

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 buttondans la mainméthode, il est donc pas accessible en dehors de celui - ci partout, même dans une méthode qui mainappelle lui - même.

Pour changeButtonTextsavoir que l' buttonexistence 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 staticmot - clé devant la changeButtonTextméthode, car mainest é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/

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=478270&siteId=1
conseillé
Classement