Podobne panele -> najlepsze rozwiązanie?

0

Witam. Pisze trochę większy projekt w Javie (używam m.in. Swinga). Zastanawiam się w jaki sposób rozwiązać następujący problem projektowy. Mam kilka klas paneli, które wyglądają podobnie - do góry mamy panel filtrów, na środku JTable, na dole jakieś buttony. Do tego wszystkie te klasy paneli mają wspólne metody. Jak powinno to zostać zaimplementowane? Wszystkie te klasy powinny dziedziczyć po jednej wspólnej nadklasie, która z kolei dziedziczyłaby po JPanel? Używam designera w netbeansie, jak wtedy rozwiązać dodawanie poszczególnych komponentów w panelu filtrów? A może rozwiązać do jeszcze inaczej? Będę wdzięczny za wasze porady. Pozdrawiam.

1

Osobiście dziedziczyłbym tylko gdybym chciał nadać taki sam wygląd wszystkim komponentom.
W tym wypadku możesz stworzyć interfejs i każdy panel mógłby go implementować. Choć raczej interfejs bardziej się nadaje gdybyś miał panele tego samego typu(zakładki realizującą podobną funkconalność lub kilka paneli filtrów).
To co podałeś to raczej komponenty "każdy z innej parafii" realizujące różną funkcjonalność więc niby jakie metody mają wspólne?

0

To znaczy tak: każdy z tych paneli ma do góry panel filtrów, na środku JTable i na dole buttony. Do tego, słuchacze przycisków realizują takie same zadania -> w sensie kod jest praktycznie taki sam, różni się tylko jakimś parametrem, który jest przekazywany do metody. Więc taka metoda powinna być jedna wspólna dla wszystkich paneli. Najbardziej pasuje mi tutaj stworzenie jednej wspólnej nadklasy tych paneli, która miałaby te metody i do tego powinna chyba zawierać trzy panele -> które w każdej podklasie byłyby odpowidnio modyfikowane, w stylu np. metodą setTable itp. Tak mi się wydaje, ale nie wiem czy to najszczęśliwsze rozwiązanie.

1

Ładny kandydat na wyciągniecie wspólnej nadklasy.

0

Można jeszcze całą logikę przenieść do kontrolera i on w zależności od strategii wykonywałby jakąś akcję.
Jakoś nadklasa(pod kątem nie widoku tylko logiki) nie pasuje mi do paneli, ale to tylko subiektywne zdanie :)

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