Está en la página 1de 4

En esta ocasión voy a tocar un tema que desde mi punto de vista es muy interesante, se trata de cómo abrir

archivos de cualquier tipo desde Java. Si tienes algo de experiencia en el tema, sabrás que existe una manera
de hacerlo ejecutando un comando de consola desde Java, o incluso con el
comando Runtime.getRuntime().exec(rutaArchivo),  sin embargo, a partir de Java 6 tenemos la
clase java.awt.Desktop que nos permite interactuar con las aplicaciones preferidas del sistema operativo.
Lo que podemos realizar al utilizar esta clase es lo siguiente:
 Abrir una dirección web en el navegador web por defecto.
 Abrir el cliente de correo por defecto con datos específicos de un correo saliente como el
destinatario, mensaje, cc, etc.
 Abrir, editar o imprimir algún archivo por medio de su aplicación configurada para dicha acción por
defecto.

Se me ocurre por ejemplo que después de que el cliente corra la aplicación que desarrollamos por primera
vez le mande a nuestro sitio en internet, o incluso colocar la ayuda de la misma en un servidor web, etc.

Debemos tomar en cuenta que en ocasiones tenemos una aplicación configurada para abrir los archivos y
alguna otra para editarlos, por ejemplo, puede ser que las imágenes las veamos en Picasa y las editemos con
Photoshop o algo por el estilo.

Teniendo claro la función de la clase java.awt.Desktop pasemos a un ejemplo de su utilización.

Aplicación EjemploClaseDesktop.jar creado en NetBeans 6.1

En primera instancia creé un nuevo proyecto con el nombre EjemploClaseDesktop.jar y agregué un nuevo
JFrame, posteriormente agregué paneles, campos de texto, botones y radio botones de manera que quedara
de la siguiente manera:

Una vez creado el JFrame, agregué las siguientes variables globales:

Desktop d; //Para realizar los procedimientos


File archivo; //Para almacenar el archivo a abrir, editar o imprimir

y al constructor se le agregó el siguiente código...


/*Establece el título de la ventana*/
setTitle("Ejemplo java.awt.Desktop");
/*Posiciona la ventana en el centro de la pantalla*/
setLocationRelativeTo(null);
setVisible(true);
        
/*Obtiene una instancia del escritorio*/
d = Desktop.getDesktop();

/*Verifica que el ambiente del SO soporte los procedimientos*/


if(d.isDesktopSupported()){
   /*si es así habilita los campos*/
   habilitarCampos(true);
}else{
   /*de lo contrario muestra un error e inhabilita los campos*/
   JOptionPane.showMessageDialog(this, "El sistema no soporta los
procedimientos.", "Error", JOptionPane.ERROR_MESSAGE);
   habilitarCampos(false);
}

En el código anterior se puede notar que antes de realizar cualquier procedimiento es recomendable verificar
si el ambiente actual soporta los procedimientos a realizar (esto a través del método isDesktopSupported()),
de ser así se habilitan los campos contenidos en la ventana.

Navegación web::
Una vez hecho lo anterior agregamos el evento al botón Ir del panel Web y escribimos el siguiente código:

     /*si no se ha escrito nada en el campo de texto*/


if(txweb.getText().equals("")){
   JOptionPane.showMessageDialog(this, "No has escrito una dirección", "Error",
JOptionPane.ERROR_MESSAGE);
   txweb.requestFocusInWindow();
   return;
}
try {
    d.browse(new URI(txweb.getText()));
} catch (Exception ex) {
   JOptionPane.showMessageDialog(this, "Error al verificar la dirección.",
"Error", JOptionPane.ERROR_MESSAGE);
   return;
}

El método browse(URI) nos permite abrir el navegador web por defecto en el sistema operativo en la


dirección indicada por un objeto URI, en este ejemplo es la dirección que se escribe en el campo de texto
correspondiente.

Correo electrónico::
Para abrir el cliente de correo por defecto en el sistema con la dirección del destinatario indicada en el campo
de texto se utiliza el siguiente código:
String mail = "mailto:"+txemailpara.getText();
try {
    d.mail(new URI(mail));
} catch (Exception ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
}

El método mail(URI) nos permite abrir el cliente de correo por defecto con los datos indicados por el objeto
URI, existen muchas maneras de estructurar una dirección URI para correo de manera que podamos pasar el
asunto del correo, CC, mensaje y demás, para mayor información te recomiendo darte una vuelta por este
sitio.

Apertura, edición e impresión de archivos::


Ahora, para el manejo de archivos tenemos que agregar el evento tanto al botón de Examinar (para escoger
el archivo) como al botón de Ok (para realizar la acción), el código del botón Examinar es el siguiente:

JFileChooser fc = new JFileChooser();


int resp = fc.showOpenDialog(this);

if(resp == JFileChooser.APPROVE_OPTION){
    archivo = fc.getSelectedFile();
    txarchivo.setText(archivo.getAbsolutePath());
}

En el código anterior se declara un nuevo objeto de la clase JFileChooser que nos permita navegar por las
carpetas y localizar el archivo sobre el cual realizaremos la acción indicada, 
una vez que se selecciona el archivo se almacena en el objeto (de acceso global) tipo File de
nombre archivo y se indica su ruta en el campo de texto correspondiente.

Al contar con un archivo sobre el cual trabajar podemos pasar al evento del botón Ok que realiza lo siguiente: 

if(archivo!=null){
    try{
        if(rdAbrir.isSelected()){
           d.open(archivo);
        }
        if(rdEditar.isSelected()){
           d.edit(archivo);
        }
        if(rdImprimir.isSelected()){
            d.print(archivo);
        }   
    }catch(Exception ex){
        JOptionPane.showMessageDialog(this, "Ocurrió un error al realizar la
acción.", "Error", JOptionPane.ERROR_MESSAGE);
        return;
    }
}else{
    JOptionPane.showMessageDialog(this, "No has seleccionado el archivo.",
"Error", JOptionPane.ERROR_MESSAGE);
    btnExaminar.requestFocusInWindow();
    return;
}
En el código anterior se verifica qué radio botón está seleccionado y se realiza la acción indicada, cabe
mencionar que los 3 radio botones pertenecen al mismo grupo (ButtongGroup), el método open() abre el
archivo indicado en la aplicación por defecto para dicha acción, edit() abre la aplicación por defecto para
editar el archivo y print() imprime el archivo, de igual manera, a través de la aplicación por defecto del
sistema.

Esto es todo con respecto a la clase java.awt.Desktop, el proyecto completo de NetBeans puedes
descargarlo desde aquí. 

Leer más: http://monillo007.blogspot.com/2008/12/abrir-archivos-de-cualquier-tipo-
desde.html#ixzz1M4HT5JY2 
Under Creative Commons License: Attribution Non-Commercial

También podría gustarte