es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El nombre de la extensión no cambia automáticamente al cambiar el tipo de archivo en el cuadro de diálogo de archivos.

Estoy intentando crear un diálogo que permita seleccionar un nombre de archivo y un tipo de archivo. Mientras se abre el diálogo, si cambio el tipo de archivo, el nombre del archivo no se actualiza automáticamente con la extensión correspondiente al tipo de archivo.

Aquí está mi código de ejemplo:

public void exportFile() {
    String exportPath = "";
    FileDialog fdlg = new FileDialog(getShell(), SWT.SAVE);
    fdlg.setFilterPath(exportPath);
    fdlg.setText("Exportar diálogo");
    fdlg.setFilterExtensions(new String[] { "*.mp3", "*.mp4" });
    fdlg.setFilterNames(new String[] { "Audio (*.mp3)", "Video (*.mp4)" });
    fdlg.setFileName("proyecto.mp3"); // nombre y tipo de archivo predeterminados

    exportPath = fdlg.open();
}

¿Hay alguna manera de cambiar automáticamente el nombre del archivo a “proyecto.mp4” si cambio el tipo de archivo en el diálogo a “Video (*.mp4)” cuando se ejecuta fdlg.open()?

¡Gracias por tu ayuda!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, la clase FileDialog no tiene una característica incorporada que actualice automáticamente la extensión del nombre del archivo en función del tipo de archivo seleccionado. Necesitaría actualizar manualmente el nombre del archivo usted mismo en función del tipo de archivo seleccionado.

    Una opción sería agregar un escuchador a la selección de tipo de archivo y luego actualizar el nombre del archivo en consecuencia. Por ejemplo:

    fdlg.addFilterListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            String[] filterExtensions = fdlg.getFilterExtensions();
            String[] filterNames = fdlg.getFilterNames();
            int index = fdlg.getFilterIndex();
            String selectedExtension = filterExtensions[index];
            String selectedName = filterNames[index];
            String currentFileName = fdlg.getFileName();
            String newFileName = currentFileName.substring(0, currentFileName.lastIndexOf(".")) + selectedExtension;
    
            // Actualizar el nombre del archivo en el diálogo
            fdlg.setFileName(newFileName);
        }
    });
    

    Este código agrega un escuchador de filtros al FileDialog, que se activará cada vez que se cambie la selección de filtro. Luego extrae la extensión y el nombre del archivo seleccionado y actualiza el nombre del archivo en el diálogo en consecuencia, reemplazando la extensión antigua por la nueva.

    Tenga en cuenta que este es solo un ejemplo básico y debe agregar manejo de errores y validación para manejar casos en los que el nombre del archivo no contenga una extensión o cuando el tipo de archivo seleccionado no sea compatible con el nombre del archivo actual.

Comments are closed.