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

时间:2012-05-16 10:07:29

标签: java swing jframe

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

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

    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
}

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

  1. 将对JLabel的引用传递给需要它的类。例如,您可以编写一个方法,将JLabel作为参数,然后将其设置为实例变量。
  2. 使JLabel成为SomeClass中的私有实例变量,并使用“getter”方法(如getJLabel())访问它。
  3. 使JLabel成为SomeClass(您的JLabel / JFrame?)中的公共实例变量,并使用SomeClass.label访问它。
  4. 第一个可能被认为是更好的编程实践。