首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java/Swing:引用另一个类中的组件

Java/Swing:引用另一个类中的组件
EN

Stack Overflow用户
提问于 2012-05-16 18:07:29
回答 2查看 3.4K关注 0票数 2

我有一个Swing-GUI (使用Netbeans GUI-Builder构建),有一个我使用箭头键移动的标签。按空格键将调用另一个类。我如何从这个类中访问标签,例如获取位置?

提前感谢您的帮助!示例-第二个类的代码:

代码语言:javascript
复制
    public class Xy extends Thread {
      private Window s; // this is the jFrame-form
      public Xy(Window s) {
        this.s = s;
        s.setBackground(Color.yellow); // works
}


public void run() {
          // here i want to use the position of a label which is located on the form s
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-17 03:11:22

最好的选择是不公开JLabel,如果你绝对不需要这样做的话。如果您希望另一个类更改标签的位置,则为持有该标签的类提供一个允许外部类执行此操作的方法。如果其他类需要查询标签的位置,则提供包含类的public getter方法,以便外部代码可以获得位置数据(而不是标签本身)。这样,如果您后来决定不想使用JLabel,而是想要显示一个完全不同的组件,就不会破坏其他类中的代码。

或者更好的做法是,让您的GUI基于MVC模型,然后更改逻辑标签在模型中的位置。视图可以通过观察者模式监听模型中的更改,然后视图本身可以更改标签的位置。

所有这一切的关键是随时随地使用loose coupling

票数 2
EN

Stack Overflow用户

发布于 2012-05-16 19:50:21

有两种方法可以做到这一点:

  1. 将对JLabel的引用传递给需要它的类。例如,您可以编写一个方法,该方法将JLabel作为参数,然后将其设置为实例变量。
  2. 将JLabel设置为SomeClass中的私有实例变量,并使用"getter“方法访问它(就像JLabel是SomeClass中的公共实例变量一样)。并使用SomeClass.label访问它。

第一种可能被认为是更好的编程实践。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10616341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档