GUIS EN JAVA
aplicaciones
El desarrollo de GUI puede, fácilmente, convertirse en un
proceso caótico.
La dinámica del interfaz (Listeners de los eventos de
ratón/teclado), están tienen que tener acceso a las variables
de estado y a los componentes para pintar los resultados.
La estructuración del código no es fácil.
Si la aplicación es grande, es unclaro problema de
mantenimiento del código a medio plazo.
RecuadrosMain
Dos grupos de componentes
jPanelText
• jTextLargo
• jTextAlto
• jTextArea
• jTextPerimetro
jPanelSliders
• jSliderLargo
• jSliderAlto
relacionados.
Manipulan los mismos datos
La modificación de los datos
se muestra como resultado
en otro componente.
Datos y modificación de los datos
doublealto;
double largo;
private void actualizarRecuadro(double largo, double alto) {
jTextLargo.setText(Double.toString(largo));
jTextAlto.setText(Double.toString(alto));
jSliderLargo.setValue((int)largo);
jSliderAlto.setValue((int)alto);
jTextPerimetro.setText(Double.toString(2*largo + 2*alto));
jTextArea.setText(Double.toString(largo * alto));
}
Control del programajTextLargoActionPerformed
jTextLargoFocusLost
private void jTextLargoActionPerformed (java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
largo=Double.parseDouble(jTextLargo.getText());
actualizarRecuadro(largo, alto);
}
Control del programa
jSliderLargoStateChanged
private void jSlideLargoStateChanged (java.awt.event.ActionEvent evt) {
// TODO add your handling code here:largo=(double)jSliderLargo.getValue();
actualizarRecuadro(largo, alto);
}
Rediseño
Separar los datos y el código del interfaz
Generar una clase para el rectángulo (datos y operaciones)
Ventaja: Disponer del modelo de datos aislado, permite
después volcarlo sobre un soporte de almacenamiento
(ficheros o base de dato).
GUI
Modelo de
Datos
El interfaz modifica el valordel modelo de datos y lo
consulta para obtener datos y resultados de operaciones.
Clase ModeloRecuadro
public class ModeloRecuadro {
private double alto;
private double largo;
public ModeloRecuadro(double a, double l)
{ alto=a; largo=l; }
public void fijarAlto(double a) { alto=a; }
public void fijarLargo(double l) { largo=l; }
public double obtenerAlto() { return alto; }
publicdouble obtenerLargo() { return largo; }
public double calcularArea() { return alto * largo; }
public double calcularPerimetro() { return 2*alto+2*largo; }
}
Limitaciones del diseño
Aunque se separa el modelo de datos del interfaz se dan otros
problemas:
Pueden existir varios componentes de interfaz de modifiquen o
muestren datos del modelo.
La lógica de cuándo se modifica elmodelo de datos (no de
cómo se hace) sigue residiendo en el interfaz, junto con la
declaración de los componentes gráficos.
El interfaz gráfico se tiene que encargar de cuando se hace una
modificación recalcular el efecto sobre todos los componentes
del mismo que se ven afectados.
GUIS en Java (3)
Modelo –Vista – Controlador (MVC)
Modelo–Vista–Controlador (MVC)
GUI
ModificarDatos
Consulta el valor de
los componentes
Actualizar Componentes
Controlador
El Controlador es el encargado de procesar los mandatos del
usuario y programar eventos.
El despliegue inicial requiere:
La creación de los tres componentes.
El Controlador debe acceder a los componentes de la Vista para
consultar sus valores.
El Controlador modifica los datos del Modelo.
El Modelo actualiza cómo se muestran de los datos del Modelo
en la Vista.
Clase ControladorRecuadros
public class ControladorRecuadros
implements ActionListener,
FocusListener,
ChangeListener {
public void actionPerformed(ActionEvent ae) {…}
public void focusGained(FocusEvent fe) {…}
public void focusLost(FocusEvent fe) {…}
public void stateChanged(ChangeEvent ce) {…}
}
Diseño...
Regístrate para leer el documento completo.