Mam klasę powiedzmy MyJFrame
, które reprezentują GUI mojej aplikacji. Implementuje interfejs Observer
i zastępuje metodę.Tworzenie obiektu JFrame i Observable
public class MyJFrame extends JFrame implements Observer{
...
public void update(Observable arg0, Object arg1){
...
}
}
Teraz chcę, aby także mój JFram obserwowanej obiektu, ale nie mogę, bo to już rozszerzyć klasę JFrame
. Próbowałem utworzyć zmienną typu Observable w mojej klasie.
public class MyJFrame extends JFrame implements Observer{
Observable observable = new Observable();
Problemem jest to, że mogę dodać obserwator tej obserwowanej dziedzinie i mogę również zawiadomić obserwatora, ale nie mogę wywołać metodę setChanghed()
(ponieważ jest zadeklarowana jako chroniona), który musi być wywołana przed zgłoszeniem .
Czy masz pojęcie, czy mogę to wdrożyć?
Dzięki!
Czy możesz być bardziej szczegółowy proszę? Dzięki! – Maverik
Po rozszerzeniu klasy można redeclare jego metod za pomocą modyfikatora widoczności, który jest wyższy niż poprzednio. Ponieważ 'Observable's' setChanged() 'był chroniony, możesz utworzyć podklasę' Observable' z 'setChanged()' będącą publiczną. – Jeffrey
Nie mam teraz sposobu, ale byłem pewien, że nie było możliwe modyfikowanie widoczności metody. Dzięki, działa! – Maverik