JAVA从另一个类访问成员实例变量

JAVA从另一个类访问成员实例变量,java,variables,class,Java,Variables,Class,我的结构如下: public class A { private javax.swing.JLabel fullName; public class B { public B() { fullName.setText("Martha Stewart"); } } ... ... ... } 我的目标是让B(目前是A的子类)在一个单独的类中 问

我的结构如下:

public class A {
     private javax.swing.JLabel fullName;

     public class B {
             public B() {
                    fullName.setText("Martha Stewart");
             }
     }
     ...
     ...
     ...
}
我的目标是让B(目前是A的子类)在一个单独的类中

问题是:当我分离这两个类时,我就失去了JLabel的.setText()调用的功能。我意识到如果B在一个单独的类中,我必须在类a中编写一个公共setter方法

然而,这是不合理的,因为我有大约100个按钮,每个按钮使用4-5个不同的功能。为每个函数创建一个getter/setter方法是不合理的

我在想一个更好的解决方案。。。朋友们,你们中有谁能帮忙吗?

B不是a的子类。它是a中的一个嵌套(内部)类


然而,您不应该尝试访问其他类型的字段——这会破坏封装。属性是更好的解决方案,或者是调用
fullName.setText()
本身的
setFullNameText
方法。仅仅因为你有100个按钮(哎哟!)并不意味着是时候把封装抛到窗外了。这意味着您可能想考虑将这100个字段分组为更小的类,但是…

不要让类修改另一个类的属性,这会破坏封装。如果您受不了getter和setter,我建议您使用一个配置对象(比如map),它可以提供给主GUI类的构造函数和/或setter

顺便说一下:

我有大约100个按钮


我认为这是一个主要问题。您应该将GUI分为几个类来表示控件组。

为什么要将其作为子类删除?能否解释一下为什么要在单独的类中设置标签文本?您是否可以创建一个方法,该方法接受一个JLabel和一个字符串,并在该label对象上调用setText?然后,类A可以传入它的JLabel对象,它将在类A之外进行修改(我不确定我是否理解您的意图,所以不确定这是否符合答案)。类B为我的GUI中的某些“选项卡组”执行特定任务,类似的还有很多。例如:我有一个带有5个模块的模拟器。每个模块都是一个子类。每个子类都在GUI中执行特定的操作。@Dante617-如果我将JLabel和字符串从类a传递到类B,这是否意味着将生成一个“JLabel副本”,并且生成的标签将无法访问?因为在本例中,fullName是一个对象(JLabel),您实际上是在传递对该对象的引用。如果您在该对象上调用一个改变其状态的方法,则类a持有的对象将具有不同的状态。感谢您的响应!有没有一种方法可以自动生成getter/setter,或者我必须一个接一个地单独生成呢?像Eclipse这样的IDE可以生成所有getter/setter。