如何同步GUI元素?

时间:2010-05-14 13:41:46

标签: java user-interface observer-pattern

我的java程序有点问题。我想使用Observer来同步两个GUI。 但我不能同步JComponent / JButton元素。例如:

我有一个实现Observer-Class的GUI-Class:

public class GUI extends JFrame implements Observer

我有第二个“GUI”类,它扩展了JButton-Class并对特定的Button-Element进行了更改。

public class Karte extends JButton{
...
this.setEnabled(false);
...

如何通过Observable同步此按钮?我已经尝试在这个类中使用“extends Observable”,但是“setEnabled()”方法对于JButton-Class是显式的,它不是Observable!

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:1)

一种方法是让Karte 拥有一个Observable(而不是一个)。

public class Karte extends JButton{

    final Observable obs = new Observable() {
        // override as needed here
    }

    // ...

    Observable asObservable() { return obs; }
}

myKarte.asObservable().addObserver(myGUI);

有利于作文优于继承,这被认为是一种良好的做法,但有时候,无论你是否愿意,这都是必要的!