JAVA-SWING problem z GUI

0

Witam,
zaczynam dopiero programowanie okienkowe w javie i natrafiłem na pierwszy problem i nie wiem jak sobie z nim poradzić.
Stworzyłem sobie proste gui z przyciskami i mam opcje zaloguj, po podaniu błędnych danych wyskakuje mi komunikat z błędem, natomiast po poprawnym wpisaniu danych, chciałbym aby wyświetliło mi się lekko zmodyfikowane okno z innymi komponentami oraz z przyciskiem wyloguj, żeby przejść do początkowej i okrojonej wersji aplikacji.
Moje pytanie brzmi, czy jest taka możliwość ,żeby do tego samego okna wczytać, nowy widok, bez otwierania nowego okna ?? Jeśli tak, to prosiłbym o podpowiedź jak sobie z takim czymś poradzić.

Dziękuje z góry za pomoc.

0

Jeśli korzystasz ze SWING to mógłbyś wykorzystać card layout do przejścia między panelem logowania a tym drugim. A gdy chciałbyś się wylogować to znowu switch na panel logowania.

1

chętnie się podłącze do tematu, powiedzcie czy to na co wpadłem jest dobrym pomysłem czy raczej kiepskawym:

po odpaleniu programu pokaze sie panel logowania, po wprowadzeniu poprawnych danych musze uzyc polecenia remove i usunac panel z podawaniem hasła, a dodać panel który ma sie pokazac po zalogowaniu, natomiast klikajac wyloguj, ma sie usuwac ten właśnie panel, a dodawać panel logowania?

0

Możesz tak zrobić, ale musisz pamiętać o przerysowywaniu komponentu rodzica, tzn. powinieneś wywołać metodę repaint() dla ContentPane'a lub całego okna. Jeśli tego nie zrobisz zmiany pojawią się dopiero po automatycznym przerysowywaniu, które może się nie odbyć podczas całego cyklu aplikacji.

3

Najbezpieczniejsza sekwencja:

remove(oldPanel);
add(newPanel);
validate();
repaint();
0

Dzięki, wszystko działa, jak należy :)

1

a ja jeszcze chciałbym spytać, do czego służy metoda validate()? bo czytam, że do ponownego rozkładu elementów na oknie, ale nie jestem pewien czy dobrze to rozumiem ;p
i czy jest różnica jesli dałbym najpierw validate a potem repaint i na odwrót?

0

Metoda validate() sprawdza, czy komponent jest zgodny z ustawieniami, czyli czy wszystki najego komponenty są na swoim miejscu, czy narysowano wszystkie i czy wrazie usunięcia jakichś komponentów nie narysowano za dużo. Natomiast metoda repaint wywołuje metodę paint gdy jest to w danej chwilii możliwe. Jeśli nie to sprawdza, czy może wykonać metodę update. Jak tak to ją wykonuje. Krótko pisząc aktualizuje grafikę komponenty. Więc najpierw powinno się wywoływać metodę validate, a dopiero później repaint.

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