【问题标题】:How do I synchronize GUI-Elements?如何同步 GUI 元素?
【发布时间】:2010-05-14 13:41:45
【问题描述】:

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

我有一个实现观察者类的 GUI 类:

public class GUI extends JFrame implements Observer

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

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

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

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 我首先建议不要使用java.util.ObserverObservable,也不要不必要地扩展类。在 Swing 中使用模型类非常方便。然后只需将侦听器添加到模型。

标签: java user-interface observer-pattern


【解决方案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);

优先考虑组合而不是继承被认为是一种很好的做法,但有时无论您是否愿意,这都是必要的!

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多