Por favor, activa JavaScript y desactiva tu adblock para este sitio

El Javatar

Blog dedicado a la Programación en Java, C, PHP, Phyton, HTML, SQL y Mucho Más

viernes, 15 de septiembre de 2017

SwingUtils - Sincronizar datos de un JCheckBox con el Controlador (Java Swing)

En este artículo veremos como sincronizar un JCheckBox de java swing con un atributo de tipo booleano del controlador para que los datos se actualicen automáticamente tanto en la vista (JCheckBox) como en el modelo de datos (atributo independiente u atributo de objeto compuesto declarados en el controlador), usando la librería SwingUtils.

La librería SwingUtils no sólo permite hacer esta sincronización con componentes de tipo javax.swing.JCheckBox; también es posible usarla con componentes de tipo javax.swing.JToggleButton y los otros componentes que heredan de esta clase:

javax.swing.JToggleButton
javax.swing.JCheckBox
javax.swing.JRadioButton

Lo primero que debemos hacer es descargar la librería SwingUtils, para lo cual puedes revisar las instrucciones en el siguiente enlace:

==> SwingUtils - Librería de Utilidades para Java Swing

Anotaciones para usar en el Controlador

Las anotaciones que podemos usar en el Controlador según sean nuestras necesidades son las siguientes:

- ModelBean
- PropertyController

Para saber como usar estas anotaciones puedes revisar esta misma sección de "Anotaciones para usar en el Controlador" en el siguiente artículo:

==> SwingUtils - Sincronizar datos de un JTextField con el Controlador (Java Swing)

El modelo de datos que usaremos es el siguiente:

public class MiModelo {

    private Boolean booleanModelo;

    public Boolean getBooleanModelo() {
        return booleanModelo;
    }

    public void setBooleanModelo(Boolean booleanModelo) {
        this.booleanModelo = booleanModelo;
    }
    
}

Recuerda que los Getter y Setter de los atributos son requeridos para asignar y obtener el valor de los atributos.

Anotaciones para usar en un JCheckBox, JRadioButton o JToggleButton de Java Swing

La librería SwingUtils en su actual versión, permite asignar un tipo de anotación a un componente de tipo JCheckBox, JRadioButton o JToggleButton:

- ToggleButtonView

Ésta anotación puede ser usada indistintamente de la misma forma en cualquiera de estos tres tipos de componente, pues el valor que nos devuelve cada uno de ellos es siempre un booleano, por lo tanto, el tipo de dato del API de Java a usar en el modelo de datos puede ser:

Boolean o boolean

Como podemos apreciar, podemos usar indistintamente el objeto o el tipo primitivo.

La forma de usar ésta anotación sería la siguiente:

@ToggleButtonView(name = "miModelo1.booleanModelo")
private javax.swing.JCheckBox jCheckBox1;

Recuerda que el uso para componentes de tipo JRadioButton o JToggleButton es igual, sin embargo, para este tutorial sólo haremos el ejemplo con un JCheckBox.

Declaramos nuestro controlador en la vista e inyectamos la dependencia de ésta para poder sincronizarlos:

public class MiVista extends javax.swing.JFrame {
 
    private final MiControlador miControlador;
     
    public MiVista() {
        initComponents();
         
        this.miControlador = new MiControlador(this);
    }
     
}

Tal cual como lo vimos en el artículo sobre Cómo sincronizar un JTextField con el controlador, los datos los obtendríamos y seteariamos en la vista de la siguiente forma:

// Método para guardar los datos
public void guardar() {
    super.changeData(TipoUpdateEnum.MODEL);
    printConsole();
}
 
// Método para limpiar el formulario
public void limpiar() {
    miModelo1 = new MiModelo();
    super.changeData(TipoUpdateEnum.VIEW);
}
 
// Método para imprimir los datos por consola
public void printConsole() {
    System.out.println("Boolean Modelo 1: " + miModelo1.getBooleanModelo());
}

Puedes revisar este artículo para comprender a fondo cómo funciona éste método super.changeData(), que como tal es el que realiza la actualización automática de los datos de la vista al modelo de datos en el controlador y viceversa.

SwingUtils - Sincronizar datos de un JCheckBox con el Controlador (Java Swing)

Como podemos apreciar, usando la librería SwingUtils,  es muy rápido sincronizar fácilmente datos de un JCheckBox, un JRadioButton o un JToggleButton con el Controlador para que la información de nuestra vista se actualice rápidamente en el modelo de datos y viceversa.

No hay comentarios.:

Publicar un comentario