lunes, 15 de diciembre de 2014

Ejemplo: JavaSE, aplicación MVC - VI

Hola de nuevo:

Vaaaaale, siii, tenéis razón ;-) ... tenía que haber empezado por diseñar el JFrame !!!

Ahora en serio. Es indiferente, dentro de la OOP, cuando diseñes los componentes. Precisamente de eso se trata: puedes diseñar objetos que se integrarán en el conjunto. O el conjunto los integrará atendiendo a sus características, que tanto monta.

Bueno, sin más dilación ahí va la clase correspondiente al JFrame principal:

public class MainWindow {

// Componentes
private JFrame window;
private JPanel north; 
private JPanel east;
private JPanel west; 
private JComponent center; 
private JPanel south;
private int width;
private int height;
 private String title;

public MainWindow() {
// CONSTRUCTOR
}

/**
* Este método fabrica un JFrame con los parámetros suministrados.

* @return - JFrame
*/
public JFrame makeWindows(int width, int height, int positionX, int positionY, String title, 
JPanel north, JPanel east, JPanel west, JComponent center, JPanel south ) {
// crea el JFrame y componentes
this.north=north;
this.south=south;
this.center=center;
this.east=east;
this.west=west;
this.width=width;
this.height=height;
  this.title=title;
window=new JFrame();
// asigna tamaño al JFrame
Dimension dim=new Dimension();
dim.setSize(width, height);
window.setMinimumSize(dim);
window.setPreferredSize(dim);
window.setMaximumSize(dim);
                // crea el BorderLayout
BorderLayout bl=new BorderLayout();
window.setLayout(bl);
                // asigna los componentes al JFrame
window.add(this.north, BorderLayout.NORTH);
window.add(this.east, BorderLayout.EAST);
window.add(this.west, BorderLayout.WEST);
window.add(this.center, BorderLayout.CENTER);
window.add(this.south, BorderLayout.SOUTH);
// parametriza elementos diversos: situación, tamaño, titulo, etc.
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
window.setLocation(positionY, positionX);
window.setTitle(this.title);
window.setVisible(true);

return window;
} // end of method makeWindow

/** * Este método modifica el JFrame; cambia el componente central y el título sustituyéndolos por los suministrados. * @param newComponent * @param title * @return - JFrame */ public JFrame changeMainPanel(JComponent newComponent, JPanel title) { this.center=newComponent; this.north=title; //AQUI HAY QUE IMPLEMENTAR EL CAMBIO DE LOS COMPONENTES
// DEL JFRAME MODIFICADO return window; }
} // ******END OF CLASS


Esta clase solo tiene 2 métodos: el makeWindow() que fabrica la ventana con los componentes suministrados; y el changeMainPanel() empleado para modificar en el JFrame el panel central (main) y el panel del título (north).

Detalles:
  • Nuestra ventana JFrame responde a un diseño clásico: un panel superior para el título, un panel inferior para el pie; dos paneles laterales para lo que consideremos oportuno (en nuestro caso, solo son márgenes) y un panel central donde irá la información. Ese diseño corresponde al BorderLayout.
  • En makeWindow recibimos muchos parámetros: el ancho y alto del JFrame, su ubicación, y los 5 componentes auxiliares del BorderLayout. Resaltar el detalle de que el componente center es un JComponent y no un JPanel. Esto es porque puede alojar tanto un JPanel (en las pantallas de creación e identificación) como un JTabbedPane (una vez identificado el usuario).
  • El método changeMainPanel() está pensado para ser el método por el cual se intercambian las ventanas. De "creación" a "identificación", y de ésta hacia "tabbedPrincipal", el intercambio de componentes se realizará invocando a este método. Le daremos el componente nuevo, y cambiaremos el título mostrado en pantalla. Este método lo implementaremos más adelante...
Anterior tema                                                                                         Siguiente tema

No hay comentarios:

Publicar un comentario