Wpis z mikrobloga

#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?
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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.
  • Odpowiedz
@czuraj: generalnie powinieneś wydzielić metody typu update() poza klasy JFrame, które są typowymi klasami widoku.

Wtedy masz np. coś takiego:

class Window1 extends
  • Odpowiedz
@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().
  • Odpowiedz
@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
  • Odpowiedz
@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"
  • Odpowiedz