我有以下结构:
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方法是不合理的恕我直言。
我正试图绕过一个更好的解决方案......你们中的任何人都可以帮忙吗?
答案 0 :(得分:2)
B 不是 A的子类。它是A中的嵌套(内部)类。
但是,您不应该尝试访问其他类型的字段 - 它会破坏封装。属性是一个更好的解决方案 - 或者是setFullNameText
方法,它自己调用fullName.setText()
。仅仅因为你有100个按钮(哎哟!)并不意味着是时候把封装扔出窗外了。它确实意味着您可能想要考虑将这100个字段分组为较小的类...
答案 1 :(得分:2)
不要让类修改另一个类的属性,这会破坏封装。如果你不能忍受getter和setter,我会建议一个配置对象(如地图),它可以提供给构造函数和/或主GUI类的setter。
顺便说一下:
我有大约100个按钮
我认为这是一个主要问题。您应该在代表控件组的几个类中打破GUI。