Java Swing GUI不';不知道构造函数中实例化的外部类
我有一个Swing GUI和一个外部类。 在Swing GUI的构造函数中,我实例化了外部类的一个新对象。 但我不能从GUI类的其他方法(例如,在动作侦听器中)使用此对象。如果我直接在action listener中实例化对象,那么我可以使用外部类的所有方法 以下是相关的代码片段;如果您需要更多信息,请告诉我:-) 1) 我的课外课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() {
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类的包中的所有类都可见。您可能需要指定访问级别(包访问的私有、公共或无)