2009-04-17 20 views
18

Mam prośbę o wprowadzenie pewnych zmian do małego apletu, który aktualnie używa JFileChooser.
Jedną z głównych skarg jest to, że selektor plików jest trudny w użyciu, ponieważ zachowuje się inaczej niż natywny widget, szczególnie w przypadku nawigacji do poziomu głównego.Alternatywa dla JFileChooser

Więc, wiedząc, że i wszystkie inne problemy JFileChooser cierpią (jak buforowanie plików zip w systemie Windows ...), zastanawiałem się, że realna alternatywa istnieje w świecie java.

Oczywiście istnieje SWT, który korzysta z natywnego widgetu, ale zwiększenie rozmiaru apletu o 25 nie jest tak naprawdę opcją. Czy istnieje lepsza czysta implementacja selektora plików?

+0

Istnieje sposób, aby otworzyć standardowy formularz okna dialogowego Windows i zapisać jako formularz okna dialogowego. Po prostu nie pamiętam, jak to zrobić. –

Odpowiedz

5

Możesz także wypróbować XFileDialog. Jeszcze nie próbowałem, ale wygląda na wartą oceny.

+0

Wow, wygląda dokładnie tak, jak tego szukałem. Dzięki! – gizmo

+4

To całkiem fajne, ale jest to tylko Windows i używa JNI. Czy istnieje wieloplatformowa alternatywa? – sworisbreathing

12

W rzeczywistości AWT FileDialog rzeczywiście korzysta z komponentu natywnego, ale tak jak w przypadku większości problemów AWT i Swing, jest znacznie mniej elastyczny i można go dostosować niż Swing's JFileChooser. Jest więc kompromis: JFileChooser może mieć przylegający interfejs użytkownika, ale zwykle jest lepszy w większości zastosowań. Jeśli naprawdę chcesz, aby okna dialogowe wybierania plików wyglądały i wyglądały jak natywne, możesz przejść z FileDialog.

0

Jako @htw powiedział użyć FileDialog, jeśli wygląd i styl są Twoim głównym problemem. Korzystając z FileDialog należy pamiętać, że istnieje wiele metod wygody, których nie można używać ...

Kilka razy użyłem VFSJFileChooser. Nie ma błędów JFileChooser (powolne ładowanie z powodu plików zip, tylko windows), ale interfejs nie jest "natywny".

6

Wiem, że jest trochę późno, ale może pomóc innym użytkownikom. Można dostosować UI aplikacji do interfejsu użytkownika systemu operacyjnego:

try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e) {e.printStackTrace();  } 
+2

Jestem też dość późno, ale warto zauważyć, że podczas gdy robi to całkiem niezłą robotę, JFileChooser na OS X przy użyciu wyglądu systemu nie przypomina wcale natywnego okna dialogowego. – sbook

+0

W Javie jest sposób na otwarcie okna i zapisanie okna dialogowego pliku? Po prostu nie pamiętam, jak to się stało. –

2

Napisałem wrapper wokół JavaFX”wyboru pliku, jeśli jest dostępna. Jeżeli są one zawarte w aplikacji, można zastąpić

JFileChooser fileChooser = new JFileChooser(); 

z

JFileChooser fileChooser = new NativeJFileChooser(); 

Będzie on następnie użyć natywnej (i nowoczesne) wyboru pliku bazowego platformy. Nie wszystko działa w 100% tak samo, więc upewnij się, że przetestujesz to później, ale większość rzeczy powinna pójść gładko.

+1

Dzięki @Veluria! Moje wstępne testy są świetne - korzysta z okien dialogowych systemu operacyjnego, tak jak powinna to zrobić każda aplikacja, i wygląda na to, że działa dobrze (sprawdzone wersje OSX i Win10) –