czuraj
#java #programowanie #swing

Mam główne okno programu - Frame. Ma w sobie listę notatek oraz guzik addNote, który otwiera kolejne okno - AddWindow. W oknie AddWindow wybieram rodzaj notatki i ją dodaję - po naciśnięciu guzika w oknie AddWindow powinna się wywołać metoda updateContent() znajdująca się we Frame. W jaki sposób mogę to zrobić? Jakiś Listener na zmiany zachodzące w oknie?
1
  • Najlepsze
  • Wszystkie komentarze
G.....i
G.....i
z tego co kojarzę na czuja to metoda updateContent jest wołana przez okno aplikacji i nie może być wywołana z innej metody. Zrób tak: ten kod, który masz w updateContent wyrzuć do osobnej metody, i zamiast niego wywołuj tą metodę. Dzięki temu możesz wywołać ją również z innego okna.
1
Eoghan
@czuraj: generalnie powinieneś wydzielić metody typu update() poza klasy JFrame, które są typowymi klasami widoku.

Wtedy masz np. coś takiego:

class Window1 extends
1
G.....i
G.....i
@czuraj: kontener w którym trzymasz notatki powinien mieć zdarzenie typu content changed lub coś podobnego. Może podepnij listener pod ten event? Nie robiłem czegoś takiego, ale powinno być to możliwe
1
Eoghan
@czuraj: nie do końca rozumiem, czy nadal masz problem, bo piszesz, że po wywołaniu windowClosed wywołujesz updateContent() - nie możesz więc tego samego kodu wywołać w ActionListenerze podpiętym pod konkretny przycisk?

Polecam też przejść na JavęFX - tam wykorzystujesz observableArrayList, po dodaniu czegokolwiek do takiej listy widok aktualizuje się automatycznie, nie trzeba wywoływać żadnych dodatkowych "odświeżaczy"
1
czuraj
@Ghostli: @Eoghan:

http://imgur.com/a/Gql5K - szybciej chyba wytłumaczę obrazowo co mam na myśli ;)

Na 3 obrazku już został naciśnięty przycisk "Add", jednak notatka nie została dodana - została dodana dopiero na obrazku 4. A chodzi o to, żeby były dodawane na bieżąco
0
czuraj
@Eoghan: @Ghostli: Gwoli ścisłości - została dodana tylko dlatego, że w głównym oknie dodałem WindowListener do tego drugiego okienka i po wywołaniu się windowClosed() wywołuję updateContent().
0