2013-01-15 8 views
6

Jak ostrzec użytkownika podczas edycji danych w interfejsie użytkownika, aby móc ostrzec ich o nadpisaniu, jeśli załadują się z innego źródła, lub zachęcić ich do zapisania? (JavaFX2.2)Jak ostrzegać użytkownika podczas edycji danych w interfejsie użytkownika, aby móc ostrzec ich o nadpisaniu lub zachęcić do zapisania? (Java)

Będę miał ponad 50 pól tekstowych na wielu kartach i 2 lub 3 tabele z przyciskami do dodawania i usuwania wierszy.

Zastanawiam się, czy mieć globalną flagę typu "isDirty" i czy można ustawić przyciski obsługi na Action na przyciskach, ale czy muszę ustawić obsługę języka onKeyTyped na każdym z pól tekstowych i obszarów tekstowych? (czy to spowolni sprawy?). Czy Java śledzi, czy jakiekolwiek pole było edytowane, a jeśli tak, czy mogę przechwycić z niego te informacje?

+3

Prawdopodobnie łatwiej byłoby zachować wszystkie dane w osobnym modelu danych i porównać model danych z zawartością pól tekstowych i tabel jako detektor akcji ładowania i zapisywania. –

+0

Posiadanie modelu danych tylko pogorszy sprawę IMHO - chociaż oczywiście mam ArrayList ("model danych") dla tabel. Są to parametry konfiguracyjne urządzenia. Czytam dane z urządzenia i umieszczam je na ekranie. Może być podłączonych więcej niż jedno urządzenie i możemy zapisywać je od jednego do drugiego - stąd istnieje niebezpieczeństwo nadpisania niezapisanych danych. – likejiujitsu

+0

Jeśli nie chcesz porównywać dwóch modeli, inną opcją jest aktualizacja tagów dowolnego pola, które zostało zaktualizowane nową klasą "dirty". Następnie możesz wyszukać brudne pola i odpowiednio nimi manipulować. – Zylth

Odpowiedz

0

Prawdopodobnie czystym rozwiązaniem byłoby posiadanie klasy MyWholeDataset, która jest wypełniona danymi podczas uruchamiania interfejsu użytkownika i innego "sklonowanego" obiektu, który jest używany do wyświetlania rzeczywistego interfejsu użytkownika. Następnie za każdym razem, gdy użytkownik zmienia dane z interfejsu użytkownika, zmieniasz drugi obiekt (klonowany). Na koniec powinieneś zaimplementować interfejs porównywalny. To mówi ci, że istnieją różnice, a następnie możesz na przykład mieć rodzaj metody "getDeltas", która zwraca albo zbiór różnych nazw pól, albo też mapą hadmową, która zwraca nazwy pól jako klucze i obiekt zawierający stary/nowy wartości par jako wartość.

+0

Brzmi to podobnie do komentarza Gilberta powyżej. – likejiujitsu

+0

Tak, to powinno być "The Way", w odniesieniu do właściwego OOP. Właśnie wolałem wyjaśnić, ponieważ Gilbert nie napisał, jak porównać modele "oryginalne" i "zmodyfikowane GUI". Moim zdaniem najlepszym rozwiązaniem byłoby użycie porównywalnego interfejsu, pozwalając modelom porównać się ze sobą, a także zapewnić metodę odzyskiwania zestawu różnic. to jest to! –

Powiązane problemy