2009-08-24 16 views

Odpowiedz

15

JFormattedTextField jest zły ze względu na słabą użyteczność. Na przykład, jeśli pole tekstowe może akceptować tylko wartość całkowitą, JFormattedTextField zezwoli na wszelkie stare śmieci, a następnie narzeka, gdy fokus zostanie utracony. Co gorsza, po utracie ostrości ma szereg konfigurowalnych zachowań (wyraźny znak, że żaden z nich nie jest właściwym wyborem).

Posiada również opcję formatowania "k3wl". Wydaje się również, że ma on słabą interakcję z dokumentem (próbuje zainstalować DocumentFilter, ale nie jest to część interfejsu Document).

9

Przyznam, że JFormattedTextField nie jest najłatwiejszą klasą do użytku, i tak, ma ona pewne problemy, ale jak większość komponentów, w niektórych przypadkach wykonuje rozsądną pracę, a w innych - kiepską.

Pozwala to na edycję wartości całkowitych, ponieważ dane są wpisywane podczas używania MaskFormatter. Tak więc dla prostych zadań może być skuteczny.

Edycja danych to skomplikowane zadanie. Czasami trzeba edytować dane w miarę ich wprowadzania (w przypadku sprawdzania wartości liczb całkowitych). Czasami musisz edytować dane po ich wprowadzeniu (w przypadku sprawdzania poprawności daty). Następnie musisz zdecydować, jak postępować z nieprawidłowymi danymi.

Może istnieć pewna ilość konfiguracji parametrów podczas wykonywania nietrywialnych zadań. Nie zawsze działają tak, jak tego chcesz lub w sposób, w jaki ich oczekujesz, więc musisz eksperymentować, aby dowiedzieć się, kiedy możesz/powinieneś używać tego komponentu.

+3

Głównym problemem z JFormattedTextField jest to, że jest zoptymalizowany pod kątem rzadkiego przypadku, zamiast wspólnego, podczas gdy brakuje komponentu dla typowego zadania. AWT jest wystarczająco zły, ale Swing, ponownie, został zaprojektowany przez ludzi, którzy nie mieli pojęcia o stanie techniki w programowaniu GUI i popełniali dwa razy te same błędy! Jeśli projektanci Javy i Swinga właśnie przyjrzeli się temu, co Delphi lub NeXt's Interface Builder byli w stanie zrobić od wczesnych lat 90-tych i jak to zrobili, zarówno język, jak i Swing byłyby dużo łatwiejsze w użyciu! –

7

Obecnie zmagam się z JFormattetTextField. Próbuję użyć NumberFormat.getPercentInstance() do formatowania mojej wartości procentowej.

Najgorsze, że .getValue() nie zwraca tej samej wartości, co użytkownik. Na przykład, jeśli wpiszesz 25,5% w sformatowanym polu tekstowym, zostanie ono zaokrąglone do 26%, ale .getValue() zwraca 0.255. To jest Zło.

+1

Powiązane pytanie: http://stackoverflow.com/questions/2206371/how-to-get-tame-valame-as-the-user-is-seeing-from-a-jformattedtextfield – Jonas

Powiązane problemy