Listener dynamiczna zmiana rozmiaru

0

Jest obiekt JFrame i on wyświetla różne obiekty JPanel zależności który wybiorę z listy JMenuBar.
JFrame posiada swojego ComponentListener który uaktualnia informacje o rozmiarze JFrame i tu wszystko działa poprawnie.
Jak zastosować Listener dla panela JPanel aby on również uaktualniał swój rozmiar. Spróbowałem do panelu JPanel zastosować ComponentListener ale on reagował tylko podczas rysowania obiektu jak wybrałem go z listy JMnuBar a później po zmianach wielkości aplikacji ten ComponentListener nie reagował.
ComponentListener z JFrame nie może tych wartości uaktalnić dla danego obiektu JPanel ponieważ musiałbym uaktualniać je dla wszystkich obiektów JPanel a jest tak że istnieje tylko jeden obiekt który właśnie jest wyświetlany.

Moje drugie pytanie:
Czy jest jakaś dobra metoda lub posiadacie jakiś sposób na przedstawiony przykład:
Uruchamiam aplikacje o wielkości width = 400 height = 200, teraz odejmując "belkę" górną gdzie znajduje się nazwa aplikacji i przyciski (zamknij),(maksymalizacja)(i schowanie aplikacji na pasku), następnie dojdzie jakiś JMenuBar to tak naprawdę tzw. placu roboczego jest o wiele mniej a nie 400/200. Czy jest jakaś metoda która pobierze ile tak naprawdę mamy pikseli do wykorzystania.

Pozdrawiam

0
  1. Czy masz jakiegoś layout managera, który obrabia ten panel i toolbar w oknie?
    A. HierarchyBoundsListener
    B. Jeżeli Twój listener poprawnie reaguje na zmianę rozmiaru, to dlaczego nie może wywoływać stworzonej w tym celu metody JPanela? Po klasie tej możesz dziedziczyć, dodać metodę i wtedy będzie ona dostępna w listenerze okna jeżeli tylko skonwertujesz referencję na potomka. W ten sposób bezpośrednio poinformujesz właściwy komponent o zmianie rozmiaru całego okna.
  2. Ustawiasz sobie preferowane oraz minimalne rozmiary obiektów, które dodałeś do drzewka GUI, które idącego od Twojego JFrame i na koniec używasz metody Window.pack(). To przeskaluje okno tak aby wszystkie komponenty były widoczne, o ile jest to możliwe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1