Zadanie 8: Lista zakupów

Writing /home/grochu/public_html/wiki/data/cache/a/a5c11fd8d8f4502e16fa1160e012451b.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a5c11fd8d8f4502e16fa1160e012451b.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/7/75e079481936e0d8ade254ee02e13f30.i failed
Writing /home/grochu/public_html/wiki/data/meta/zajecia/java_2026_1/sidebar.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/a/a5c11fd8d8f4502e16fa1160e012451b.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/c/cc45a5ebf66fb7994e71df3b7e3df082.xhtml failed

Stwórz prostą aplikację JavaFX do zarządzania listą zakupów.

Wymagania:

  • Aplikacja powinna umożliwiać dodawanie nowych pozycji do listy oraz usuwanie zaznaczonych pozycji.
  • Użyj ObservableList do przechowywania danych, ListView do wyświetlania listy, TextField do wprowadzania nowych pozycji
  • Przycisk Dodaj powinien być aktywny tylko wtedy, gdy pole tekstowe nie jest puste (użyj wiązania)
  • Przycisk Usuń powinien usuwać aktualnie zaznaczoną pozycję z listy (lub wiele zaznaczonych pozycji)
  • Wygląd aplikacji dowolny - zaprojektuj samodzielnie, najlepiej z pomocą Scene Buildera

Wskazówki:

  • disableProperty().bind(…) dla przycisku
  • getSelectionModel().getSelectedIndex() dla usuwania
  • Puste wejście ignoruj przez trim().isEmpty()

Opcjonalnie (nie wymagane do zaliczenia):

  • zadeklaruj widok w FXML
  • zdefiniuj klasę kontrolera i powiąż go z widokiem
  • zastosuj stylowanie CSS do poprawy wyglądu interfejsu