我有一个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
}发布于 2012-05-17 03:11:22
最好的选择是不公开JLabel,如果你绝对不需要这样做的话。如果您希望另一个类更改标签的位置,则为持有该标签的类提供一个允许外部类执行此操作的方法。如果其他类需要查询标签的位置,则提供包含类的public getter方法,以便外部代码可以获得位置数据(而不是标签本身)。这样,如果您后来决定不想使用JLabel,而是想要显示一个完全不同的组件,就不会破坏其他类中的代码。
或者更好的做法是,让您的GUI基于MVC模型,然后更改逻辑标签在模型中的位置。视图可以通过观察者模式监听模型中的更改,然后视图本身可以更改标签的位置。
所有这一切的关键是随时随地使用loose coupling。
发布于 2012-05-16 19:50:21
有两种方法可以做到这一点:
第一种可能被认为是更好的编程实践。
https://stackoverflow.com/questions/10616341
复制相似问题