Swing- przekazywanie informacji między oknami

Swing- przekazywanie informacji między oknami
QK
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 11 lat
0

Cześć :)
mój problem wygląda następująco- mam kilka okien i potrzebuję sposobu, żeby się między nimi przełączać. Tzn, na przykład:
Okno 1 - logowanie. Po kliknięciu buttona 'Zaloguj' przenosi mnie do innego okna (Okno 2)
Okno 2 - okno opcji. Kilka buttonów z opcjami, po wybraniu jakiegoś przenosi mnie do kolejnego okna (Okno 3), lub po wybraniu opcji powrót, wraca znowu do Okna 1.
Okno 3 - kolejne opcje, wpisy do bazy danych itp. Też muszę mieć możliwość powrotu do wcześniejszych okien.

Przejrzałam dotychczasowe wątki na ten temat, ale nie znalazłam satysfakcjonującej mnie odpowiedzi :(
Aplikacja ma być napisana w Swingu, za pomocą WindowBuildera.
Proszę o jakieś wskazówki jak się do tego zabrać...

edit: od razu dodam, że sposób z przekazywaniem referencji niezbyt mnie satysfakcjonuje

edytowany 1x, ostatnio: Qkartka
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Można wiedzieć dlaczego najbardziej naturalny sposób (przekazywanie referencji) nie jest satysfakcjonujący?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

@Qkartka przykro mi że cię nie satysfakcjonuje, ale mimo wszystko będzie musiał. Przypuszczam ze nie masz pojęcia o OOP i stąd twoje "nieusatysfacjonowanie". Bo już sam fakt o pytanie jak komunikować ze sobą "okna" zamiast "obiekty" wskazuje że nie masz pojęcia co robisz.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
QK
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 11 lat
0

@Shalom Napisałam okna, bo tak jest bardziej obrazowo i pytam nie o implementację, tylko sam pomysł jak to rozwiązać. Tak, każde moje okno to obiekt jakiejś klasy. Akurat Builder rozwiązuje to tak, że w każdej takiej klasie mam JFrame'a, oraz inne komponenty potrzebne do budowy. Mam też główną klasę która nimi zarządza. Problem w tym, że nie mogę się dostać do obiektu jednej klasy z obiektu innej (mogę to zrobić jedynie z klasy głównej). Mogę dziedziczyć, stworzyć sobie jakąś tam hierarchię, ale dziedziczenie takie będzie nielogiczne i zaburzy czytelność programu. Dlatego pytam o dobry sposób rozwiązania.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Jeśli jeden obiekt potrzebuje wpłynąć na inny obiekt, np. poprzez wywołanie jakiejś jego metody to musi mieć do niego referencje i już. Istnieje rozwiązanie alternatywne -> obiekt X generuje zdarzenie Y a następnie "w jakiś sposób" (np. wykorzystując Observera) obiekty oczekujące na zdarzenia Y są o tym informowane. Ale nie wiem czy tutaj byłoby to sensowne.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

Niech okna "rozmawiają" za pośrednictwem klasy głównej. Każde okno ma referencję do klasy głównej, klasa główna ma referencję do wszystkich okien. Być może w postaci HashMapy z kluczami będącymi nazwami okien. A potem

Kopiuj
mainClass.okna.get("Okno logowania").doSomething();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
QK
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 11 lat
0

@bogdans dzięki, przydało się :)

0

Możesz też skorzystać z javovej implmentacji Event Bus (o ile dobrze pamiętam, jest taka w Guavie). Wtedy możesz między dowolnymi częściami w aplikacji przesyłać wiadomości, a każda klasa może na takie wiadomości reagować.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.