Java Swing GUI不';不知道构造函数中实例化的外部类

Java Swing GUI不';不知道构造函数中实例化的外部类,java,swing,constructor,Java,Swing,Constructor,我有一个Swing GUI和一个外部类。 在Swing GUI的构造函数中,我实例化了外部类的一个新对象。 但我不能从GUI类的其他方法(例如,在动作侦听器中)使用此对象。如果我直接在action listener中实例化对象,那么我可以使用外部类的所有方法 以下是相关的代码片段;如果您需要更多信息,请告诉我:-) 1) 我的课外课 public class ExternalClass { private int a = 100; public int getA() {

我有一个Swing GUI和一个外部类。 在Swing GUI的构造函数中,我实例化了外部类的一个新对象。 但我不能从GUI类的其他方法(例如,在动作侦听器中)使用此对象。如果我直接在action listener中实例化对象,那么我可以使用外部类的所有方法

以下是相关的代码片段;如果您需要更多信息,请告诉我:-)

1) 我的课外课

public class ExternalClass
{
    private int a = 100;
    public int getA() {
        return a;
    }
}
2) 我的GUI类的一部分

公共类GUI扩展了javax.swing.JFrame {


在构造函数中声明并实例化
e
变量,因此它仅在构造函数中可见


将它声明为成员变量,您可以在那里或构造函数中实例化它。

您可以在构造函数中声明并实例化
e
变量,因此它仅在构造函数中可见


将它声明为成员变量,您可以在那里或构造函数中实例化它。

您的
e
对象的作用域(作用域表示变量的可见程度)仅限于构造函数,因为您在该构造函数中说了
ExternalClass e

最简单的解决方案是使该变量成为类的成员,而不仅仅是在构造函数中定义


ExternalClass e
的声明移到构造函数外部,但仍在类本身中。在构造函数中,只需执行
e=new ExternalClass()
e
在这里的构造函数中可见,因为构造函数的作用域比类本身的作用域低,同样,它也会在
jButton1ActionPerformed
方法中可见。

您的
e
对象的作用域(作用域表示变量的可见程度)仅限于构造函数,因为您在该构造函数中说了
ExternalClass e

最简单的解决方案是使该变量成为类的成员,而不仅仅是在构造函数中定义


ExternalClass e
的声明移到构造函数外部,但仍在类本身中。在构造函数中,只需执行
e=new ExternalClass()
e
在这里的构造函数中是可见的,因为构造函数的作用域低于类本身,并且它在
jButton1ActionPerformed
方法中也是可见的,原因相同。

对象在构造函数中声明。因此,它只存在于构造函数本身中。如果要使用它,请n其他方法必须在外部将其声明为类的属性,例如如下所示

ExternalClass e;    

// constructor
public GUI()
{
    initComponents();
    e = new ExternalClass();
}

请注意,此字段对包含GUI类的包中的所有类都可见。您可能需要指定访问级别(对于包访问,为私有、公共或无).

该对象在构造函数中声明。因此,它只存在于构造函数本身中。如果要在其他方法中使用它,则必须在外部将其声明为类的属性,例如,如下所示

ExternalClass e;    

// constructor
public GUI()
{
    initComponents();
    e = new ExternalClass();
}
请注意,此字段对包含GUI类的包中的所有类都可见。您可能需要指定访问级别(包访问的私有、公共或无)