viernes, 11 de febrero de 2011

Mensajes en java con showMessageDialog y mensajes personalizados con JDialog.

Mensajes en java con showMessageDialog.


Para mostrar un mensaje en Java se utiliza el showMessageDialog de la librería JOptionPane, con esto conseguiremos un mensaje como el siguiente:

showMessageDialog de JOptionPane
Para ello, tenemos que importar la librería JOptionPane:

import javax.swing.JOptionPane;
//Aqui mostramos el mensaje:
JOptionPane.showMessageDialog(rootPane, "true");//Muestra el mensaje anterior.
Más tipos de mensajes: 
Nota: Estos mensajes se muestran así por que se esta usando substance.


Mensajes personalizados con JDialog.


Si no queremos hacer uso de los mensajes típicos de Java, podemos crear los nuestros con nuevos diseños y opciones personalizadas, a continuación veremos un mensaje personalizado que permite aceptar o cancelar una determinada acción.
Pues bien sin mas ni menos, manos a la obra :

Primero agregamos un formulario de tipo JDialog:



Diseño: Una vez agregado nuestro formulario, en modo diseño podemos hacer algo parecido a lo que veremos a continuación:
JDialog en modo diseño.
Este consta de un JBoton para aceptar, un JBoton para cancelar, y un JLabel que es donde posteriormente mostraremos la pregunta del JDialog.


Ahora una vez hecho el diseño del JDialog, vamos al código y agregamos un atributo privado a esta clase que va a permitir guardar el valor boolean de aceptado(true) o cancelado(false):

       private boolean acep = false; //Atributo para ver si se acepta o no el mensaje, por defecto false.

Luego colocamos en la acción ActionPerformed del boton Aceptar:

        acep=true;
        this.setVisible(false);

Así mismo en la acción ActionPerformed del botón Cancelar:

      this.setVisible(false);

Ahora modificamos el constructor de la clase, para que pida un parámetro más de tipo String para la pregunta que se muestra en el JLabel:

public DialogAcCa(java.awt.Frame parent, boolean modal, String preg) {
        super(parent, modal);
        initComponents();
        setLocationRelativeTo(null);
        this.lblPregunta.setText(preg);
        this.setVisible(true);
        this.setAlwaysOnTop(true);
    }

El método getResponse el que nos regresa el valor de boolean de aceptado o no:

public boolean getResponse(){
return this.acep;
}

Hasta aquí listo el JDialog.

Para llamar o hacer uso de nuestro mensaje se lo hace de la siguiente manera:

//Se crea el dialog, enviando la pregunta como un parámetro.

DialogAcCa D = new DialogAcCa(this, rootPaneCheckingEnabled,"¿Desea Salir?");

        if (D.getResponse()) //D es nuestro Dialog Personalizado, espera la respuesta.
        {  //Operaciones que se realizan al Aceptar el mensaje.
        } else
        { //Operaciones que se realizan al Cancelar el mensaje.
         }

Y tendremos esto:
Mensaje personalizado con JDialog.
 También podemos modificar la propiedad undecorated a true del Dialog y obtenemos algo así:

JDialog con la propiedad undecorated = true.

Este es el código resultante de la Clase DialogAcCa (Nuestro mensaje personalizado JDialog) con las funciones mas importantes:

public class DialogAcCa extends javax.swing.JDialog {

    public DialogAcCa(java.awt.Frame parent, boolean modal, String preg) {
        super(parent, modal);
        initComponents();
        setLocationRelativeTo(null);
        this.lblPregunta.setText(preg);
        this.setVisible(true);
        this.setAlwaysOnTop(true);
    }
    public boolean getResponse(){
return this.acep;
}

    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        acep=true;
        this.setVisible(false);
    }                                          

    private void btnCancActionPerformed(java.awt.event.ActionEvent evt) {                                        
        this.setVisible(false);
    }                                       

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                DialogAcCa dialog = new DialogAcCa(new javax.swing.JFrame(), true,"Error");
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    private boolean acep = false; //Nuestro Atributo para saber si se acepta o no.
}

Espero esto les sirva de ayuda...

miércoles, 9 de febrero de 2011

Cambio de formas de botones, usando Substance Look And Feel.

Ahora veremos como cambiar la forma de un botón con el uso de la librería substance, la misma que nos permite darle un estilo de redondeado como las siguientes:

Este es un botón swing normal:

Ahora un botón normal aplicando substance(esta seleccionado):

Esto se logra al aplicar la substance a nuestra ventana, como lo vimos aquí, el color depende del tema que se le aplique a nuestra interfaz.

Colocarle una forma al botón para redondear sus bordes..:

Para cambiar la forma de un botón podemos modificarlo después del 
initComponents()..:



public Ventana() {
        initComponents();
        this.btnNuevo.putClientProperty( SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY, new StandardButtonShaper());
}


Con esto conseguimos que un botón como el siguiente:

StandardButtonShaper()
O bien si lo hacemos con una altura y un ancho determinado, podremos obtener algo así: 
StandardButtonShaper()


Hacer un botón abierto redondeando sólo uno de sus lados:

Para modificar los botones de nuestra interfaz lo tenemos que hacer luego del initComponents() de nuestra ventana, es decir después de haber creado los botones, podemos modificar algunos controles, pero en este caso veremos sólo con los botones. Para ello modificamos la propiedad putClientProperty de cada botón Swing a modificar ejm:

public Ventana() { //Constructor de nuestra Ventana, la cual contiene los botones.
        initComponents();

        this.btnNuevo.putClientProperty( SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY, new StandardButtonShaper());
        this.btnNuevo.putClientProperty( SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY, SubstanceConstants.Side.RIGHT);
        this.btnNuevo.putClientProperty( SubstanceLookAndFeel.BUTTON_OPEN_SIDE_PROPERTY, SubstanceConstants.Side.RIGHT);
}


Con este código nos resulta el botón:
Side.RIGHT
Así mismo cambiando el Side podremos obtener cualquiera de las siguientes formas en los botones:
Side.LEFT

Side.TOP

Side.BOTTOM

Nota-Recomendación: He notado que si no tenemos un texto en el botón, este no toma la forma deseada, es decir: si tengo la propiedad text del botón vacía, no se aplican las formas a los botones como lo vimos en la parte superior, para ello lo que hice fué colocar un espacio vacío en la propiedad text(" ") y funcionó correctamente.

Espero les sirva de ayuda...

lunes, 24 de enero de 2011

Cambio de Interfaces en JAVA, uso de Substance Look And Feel. Parte 2

En el tutorial anterior, vimos como usar Substance desde la descarga de la librería a el cambio de la interfaz. Ahora vamos a ver un poco mas del uso básico de substance.

¿Cómo colocar una Marca de Agua?


Suponiendo que usamos el ejemplo anterior con el Skin CremeCoffeeSkin, colocamos una línea de código más:
SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.SubstanceCopperplateEngravingWatermark");


Skin CremeCoffeeSkin sin Marca de Agua.

Skin CremeCoffeeSkin con SubstanceCopperplateEngravingWatermark.

Skin MangoSkin con SubstanceKatakanaWatermark.

Skin ModerateSkin con SubstanceBubblesWatermark.

Ahora veremos, como colocar una imagen como Marca de Agua.

Para ello, adicionamos la librería SubstanceImageWatermark:

import org.jvnet.substance.watermark.SubstanceImageWatermark;

y después de la colocación del Skin en el main, se configura la imagen de la Marca de Agua y la opacidad de la misma en el formulario de la siguiente manera:

SubstanceLookAndFeel.setCurrentWatermark( new SubstanceImageWatermark("c:/ima.jpg")); //La imagen de fondo.
SubstanceLookAndFeel.setImageWatermarkOpacity(new Float(0.6)); //valor aproximado de la opacidad de imageWatermark.

Ejemplo:


Colocando la Imagen:
ima.jpg
a la ventana del ejemplo anterior queda así:

Ventana Usando una imagen como marca de Agua.
Por cierto el código del main me queda así:

import javax.swing.JFrame;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.watermark.SubstanceImageWatermark;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       JFrame.setDefaultLookAndFeelDecorated(true); 
      SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.ModerateSkin"); // Setencia que aplica el skin Creme de Substance BusinessBlueSteelSkin NimbusLookAndFeel
      SubstanceLookAndFeel.setCurrentWatermark( new SubstanceImageWatermark("c:/recusiadho/ima.jpg")); //Aqui colocamos la imagen
      SubstanceLookAndFeel.setImageWatermarkOpacity(new Float(0.6));//valor aproximado de la opacidad para el Watermark
     JFIngreso Ventana  = new JFIngreso(); //JFIngreso es la ventana del ejemplo anterior.
     Ventana.setVisible(true);
    }

}

Listo, espero les sirva de ayuda.

Cambio de Interfaces en JAVA, uso de Substance Look And Feel. Parte 1

Si alguna vez nos preguntamos, ¿Cómo puedo hacer que mi aplicación de escritorio se vea mejor? o ¿Como cambio la interfaz de mi aplicación?.....o algo por el estilo... Acá les escribo de un proyecto interesante, es el proyecto Substance, el cual mediante unas librerías nos permite cambiar el entorno de nuestras aplicaciones de escritorio de la manera mas fácil, pudiendo así colocar Marcas de Agua, Apariencias, Cambiar la forma a los botones...entre otras apariencias sobre los controles SWING....

Pero......¿¿¿Cómo se hace...???.


Primero descargamos los .JAR necesarios de Substance, la version que voy a usar es la Substance 4.3 siendo la última 6.1, pero aún no he conseguido hacerlo con esta última...
Para ello vamos a https://substance.dev.java.net/servlets/ProjectDocumentList?folderID=9911&expandFolder=9911&folderID=6320 y descargamos el que dice Runtime library (full functionality), unos 1.75 MB. o bien si queréis descargar el proyecto completo Substance 4.3 distribution, unos 15.5 MB. 
Sugerencia: Luego de descargarlo lo colocamos en una carpeta fácil de acceder ejemplo "C:\Librerias\".


Ahora Abrimos nuestro NetBeans...y en un nuevo proyecto o en uno existente damos click derecho en la parte que dice Libraries >> AddJAR/Folder (Imagen 1):


Imagen 1.
y nos aparece la ventana (Imagen 2):
Imagen 2.

Aquí seleccionamos el archivo substance que nos descargamos (guardado en "C:\Librerias\" si seguiste mi consejo) y damos click en abrir, luego se nos tiene que cargar en nuestro proyecto este substance.jar (Imagen 3).

Imagen 3.
Hasta ahora hemos preparado el entorno y las librerías necesarias, ahora para cambiar la interfaz se implementa (puede ser en el main) el siguiente código:

Importamos la librería Substance Look And Feel...

import org.jvnet.substance.SubstanceLookAndFeel;


En el main:


JFrame.setDefaultLookAndFeelDecorated(true);
SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.CremeCoffeeSkin");

JFIngreso Ventana  = new JFIngreso();

Ventana.setVisible(true);




Donde: 
JFIngreso es la primera ventana que quieres mostrar en el proyecto.





Ejemplo de lo Realizado:




Antes de Aplicar Substance.

Después de Aplicar CremeCoffeeSkin.

Después de Aplicar MagmaSkin

Después de Aplicar EmeraldDuskSkin

Después de Aplicar RavenSkin

Nota: Ignorar el redondeado de los botones eso lo veremos en cambio de formas a los botones.
Puedes probar con otros Skins, estos no son los únicos....


Ahora podemos Continuar con un par de ejemplos mas sobre Substance....Cambio de Interfaces en JAVA, uso de Substance Look And Feel. Parte 2

Instalación de JDK 7 y Netbeans 6.9.1 en XP

Instalación de Java Development Kit 7 (JDK7).
Para instalar Java primero hay que descargar el  JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html y te resulta algo como lo de la imagen 1 (de unos 84 MB):
Imagen 1.
Una vez obtenido el instalador de nuestro JDK, lo que hay que hacer es ejecutarlo e instalar dando siguiente, siguiente....etc.
Si todo va bien, se va a instalar en C:\Archivos de programa\Java\jdk1.7.0 nuestro java.
Listo de la manera mas fácil hemos cumplido nuestro primer paso.

La Variable PATH:
La variable Path es la que permite ejecutar el compilador de java (javac.exe,java.exe,javadoc.exe) directamente sin especificar la ruta del mismo.
Para ello, hay que ir a: MiPC>>Propiedades>> Luego a la pestaña Opciones Avanzadas>>Variables de entorno>>
Estando ya aqui:
En la parte que dice Variables del Sistema verificamos si existe una variable llamada PATH, si no existe; la creamos y le Colocamos como valor C:\Archivos de programa\Java\jdk1.7.0\bin en caso de que exista, al final del valor colcamos punto y coma(;) y el valor C:\Archivos de programa\Java\jdk1.7.0\bin donde se supone instalamos el JDK.
Imagen 2.
Para verificar que hicimos el paso correctamente abrimos el cmd (inicio>>ejecutar>>cmd>>Aceptar) y colocamos: set , nos debe aparecer una lista, donde sale el Path con la dirección que le colocamos...:
Imagen 3.

Instalación de NetBeans  6.9.1.


Para Instalar Netbeans se descarga el Paquetes de descarga de NetBeans IDE, el que Dice Java.
O da click en este enlace http://netbeans.org/downloads/start.html?platform=windows&lang=en&option=java

De esto nos resulta el ejecutable de unos 213 MB.
Imagen 4.
Ahora ejecutamos y damos siguiente, siguiente, etc etc. Nos pide la ruta de donde esta instalado ej JDK pero la toma por defecto. Y listo ahora hemos Instalado tambien nuestro entorno de desarrollo.

Imagen 5.

Imagen 6.

Espero que les haya sido de ayuda mis pequeños grandes desarrolladores.

viernes, 21 de enero de 2011

Cómo colocar una imagen en un JFrame (Imagen escalada).

Hay varias formas de colocar una imagen en un Jframe, una de ellas es usando un JLabel como lo veremos a continuación.

Para ello, creamos un JLabel(jLabel1) y un JButton(jButton1) que es donde se hace la carga de la imagen al dar click...(esto último Uds. pueden hacerlo donde lo deseen).

Primero se tienen que importar las librerías java.awt.Image y javax.swing.ImageIcon.


         import java.awt.Image;
         import javax.swing.ImageIcon;

Luego de esto lo que hay que hacer es cargar la imagen de donde la tengamos guardada, esto se lo hace de la siguiente Forma:

                 ImageIcon icono = new javax.swing.ImageIcon(getClass().getResource("/imagenes/ima.png"));

Después la hacemos imagen:

         Image imagen = icono.getImage();

Ahora le podemos dar una dimensión deseada:

        ImageIcon iconoEscalado = new ImageIcon (imagen.getScaledInstance(100,100,Image.SCALE_SMOOTH));

Para finalmente colocarla en nuestro JLabel:

         jLabel1.setIcon(iconoEscalado);


El Código Final me queda así:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        ImageIcon icono = new javax.swing.ImageIcon(getClass().getResource("/imagenes/ima.png"));
        Image imagen = icono.getImage();
        ImageIcon iconoEscalado = new ImageIcon (imagen.getScaledInstance(100,100,Image.SCALE_SMOOTH));
        jLabel1.setIcon(iconoEscalado);
    }


Espero les sea de utilidad.