2009-04-17 22 views
18

Tengo una solicitud para realizar algunos cambios en un pequeño applet que actualmente usa un JFileChooser.
Una de las principales quejas es que el selector de archivos es un fastidio para usar porque se comporta de manera diferente que el widget nativo, especialmente para navegar hasta el nivel raíz.Alternativa a JFileChooser

Entonces, sabiendo eso y todos los demás problemas que sufre JFileChooser (como el almacenamiento en caché de archivos comprimidos en Windows ...), me preguntaba si existe una alternativa viable en el mundo java.

Por supuesto, hay SWT que usan el widget nativo, pero aumentar el tamaño del applet en 25 no es realmente una opción. Entonces, ¿hay una mejor implementación java pura de un selector de archivos?

+0

Hay una forma de abrir el formulario de diálogo abierto de Windows estándar y guardarlo como formulario de diálogo. Simplemente no puedo recordar cómo hacerlo. –

Respuesta

5

También puedes probar XFileDialog. Todavía no lo he probado mucho, pero vale la pena evaluarlo.

+0

Guau, parece ser exactamente lo que estaba buscando. ¡Gracias! – gizmo

+4

Eso es genial, pero solo para Windows y usa JNI. ¿Hay una alternativa multiplataforma? – sworisbreathing

12

En realidad, el AWT FileDialog usa el componente nativo, pero como con la mayoría de los problemas AWT vs. Swing, es mucho menos flexible y personalizable que el JFileChooser de Swing. Así que hay una compensación: JFileChooser puede tener una interfaz de usuario torpe, pero generalmente es mejor para la mayoría de los propósitos. Sin embargo, si realmente desea que su archivo elija los diálogos para que se vean y se sientan como los nativos, puede ir con FileDialog.

0

Como @htw dijo use FileDialog si la apariencia es su principal preocupación. Al usar FileDialog tenga en cuenta que hay muchos métodos de conveniencia que no podrá usar ...

He usado VFSJFileChooser algunas veces. No sufre los errores de JFileChooser (lento de cargar debido a los archivos zip, solo Windows), pero la interfaz no es "nativa".

6

Sé que esto es un poco tarde, pero puede ayudar a otros usuarios. Puede personalizar la interfaz de usuario de una aplicación a la interfaz de usuario del sistema operativo:

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

También llegué bastante tarde aquí, pero vale la pena señalar que, si bien este es un buen trabajo, el JFileChooser en OS X que usa el aspecto del sistema no recuerda para nada el diálogo nativo. – sbook

+0

¿Hay alguna forma en Java de abrir las ventanas y guardar la ventana de diálogo de archivos? Simplemente no puedo recordar cómo se hizo. –

2

me escribió una wrapper alrededor selector de archivos JavaFX' si está disponible. Si se incluye en su aplicación, puede reemplazar

JFileChooser fileChooser = new JFileChooser(); 

con

JFileChooser fileChooser = new NativeJFileChooser(); 

A continuación, utilizar el nativo (y moderna) selector de archivos de la plataforma subyacente. No todo funciona al 100% igual, así que asegúrese de probarlo luego, pero la mayoría de las cosas deberían ir sin problemas.

+1

Gracias @Veluria! Mis pruebas iniciales son geniales: esto usa los cuadros de diálogo del sistema operativo como cualquier aplicación debería ser capaz de hacer, y parece funcionar bien (comprobado OSX y Win10) –