2

我有一个 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
}
4

2 回答 2

2

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

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

所有这一切的关键是随时随地使用松散耦合。

于 2012-05-16T19:11:21.847 回答
1

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

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

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

于 2012-05-16T11:50:20.690 回答