Как мне синхронизировать GUI-элементы? - PullRequest
0 голосов
/ 14 мая 2010

У меня небольшая проблема с моей java-программой. Я хочу использовать Observer для синхронизации двух графических интерфейсов. Но я не могу синхронизировать элементы JComponent / JButton. Например:

У меня есть GUI-класс, который реализует Observer-класс:

public class GUI extends JFrame implements Observer

У меня есть второй "GUI" -класс, который расширяет класс JButton и вносит изменения в определенный элемент Button.

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

Как мне синхронизировать эту кнопку через Observable? Я уже пытался использовать «extends Observable» в этом классе, но метод «setEnabled ()» явно для класса JButton, который не является Observable!

Может кто-нибудь помочь?

Спасибо.

1 Ответ

1 голос
/ 14 мая 2010

Один из способов сделать это - позволить Карте иметь Наблюдаемый (а не единичный).

public class Karte extends JButton{

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

    // ...

    Observable asObservable() { return obs; }
}

myKarte.asObservable().addObserver(myGUI);

Считается хорошей практикой отдавать предпочтение композиции, а не наследованию, но иногда просто необходимо, хотите вы этого или нет!

...