私有变量不能引用同一个方法中的另一个方法class

Private variable cannot reference to another method in the same class

我是 Java 的新手,今天我在尝试执行 ActionListener 时遇到代码问题 我的 java class 看起来像这样:

public class exam{
    private void createForm(){
        ...
        JButton jbtn = new JButton("OK");
        jbtn.addActionListener((ActionListener) this);
        ...
    }
    public static void main(String[] args){
        exam ex = new exam();
        ex.createForm();
    }
    public void ActionPerformed(ActionEvent ae){
        //IDE show that no variable name "jbtn"
        if (ae.getSource() == jbtn){
            ...
        }
    }
}   

您的 jbtn 变量在 createForm 方法中 声明。 Java 使用所谓的 "scoping rules" 来确保您不会不小心使用您不希望使用的变量。通过在 createForm 中声明 jbtn,您告诉 Java 编译器您只想在该方法中使用它,而不是其他任何地方。这称为 "local" 变量(例如,它是方法的本地变量)。

您可能想要使用 "member variable"(它是 class 的 成员)。这是在 class 内部声明的,但在任何方法之外。在您的情况下,它看起来像这样:

public class exam{
    JButton jbtn;

    private void createForm(){
        ...
        jbtn = new JButton("OK");
        jbtn.addActionListener((ActionListener) this);
        ...
    }

变量的声明现在处于 class 级别,并且在 createForm 中以与 ActionPerformed.

中相同的方式引用它

这是 Java 中的一个相当基本的概念,因此您可能想看一下有关这方面内容的一些 Java 教程。 official tutorial 是一个很好的起点。