La historia: AWT
Fue definido como un conjunto de paquetes inicialmente, para la construcción de interfaces graficas. Esta basado en contenedores gráficos mas componentes gráficos, mas modelo de eventos. Los componentes de AWT están implementados en código nativo, es decir que están restringidos a las características de la plataforma.
Por ejemplo si la plataforma no permite imágenes en los botones, entonces no será posible construir un botón con una imagen en lugar del texto. La mayoría de los componentes de AWT son subclases de Component, excepto los contenedores de mayor nivel como Frame, Dialog y Applet.
Estructura de una aplicación AWT
Los componentes de AWT están dentro del paquete java.awt. Todo componente se utiliza dentro de un java.awt.Frame. La pantalla a construir será una subclase de java.awt.Frame. La pantalla estará compuesta por:
Los atributos, que son componentes gráficos. Los métodos, que manejan los eventos que ocurren sobre los componentes gráficos. El método initComponent(), método llamado por el constructor donde se inicializan todos los componentes gráficos.
La actualidad: Swing
Swing, nombre del proyecto dedicado a la construcción de componentes gráficos. Si bien ha
quedado inmortalizado como Swing, su denominación es JFC (Java Fundation Classes) ya que incluye otros paquetes adicionales. Las JFC incluyen un grupo de características para la creación de interfaces graficas. Los componentes Swing GUI es una de las características de las JFC.
Esta basado en contenedores gráficos mas componentes gráficos mas un modelo de eventos. Es el conjunto de paquetes utilizados para la construcción de interfaces graficas. Los componentes Swing están implementados sin código nativo, es decir que están no restringidos a las características de la plataforma.
Por ejemplo, si la plataforma no permite imágenes en los botones, con Swing es posible agregarlos. La mayoría de los componentes de Swing son subclases de JComponent, excepto los contenedores de mayor nivel como JFrame, JDialog y JApplet. Swing utiliza algunas clases de AWT.
Estructura de una aplicación Swing
Los componentes de Swing están dentro de paquetes como javax.swing. Todo componente grafico se utiliza dentro de un javax.swing.JFrame. La pantalla a construir será una subclase de javax.swing.JFrame.
A diferencia de los componentes de AWT, los componentes Swing comienzan con la letra J. Por ejemplo, un marco en AWT se llama Frame y en Swing se llama JFrame, o un botón en AWT es Button, y en Swing es JButton. La pantalla estará compuesta por:
Los atributos, son componentes gráficos. Los métodos, se manejan como los eventos que ocurren sobre un componente grafico. El método initComponents, método que es llamado por el constructor, donde se inicializan todos los componentes gráficos.
Swing vs. AWT
Ambos representan distintas maneras de armar una interfaz grafica. AWT es el primer framework de Java para construcción grafica y luego nace Swing. Los componentes AWT están implementados con código nativo mientras que los componentes Swing no.
Por esta razón los componentes Swing pueden tener más funcionalidad ya que no están restringidos a las características comunes de cada plataforma. Como regla, en Swing los componentes deben ser añadidos a objetos JPanel y no directamente a JFrame.
Swing como negocio
Existen empresas dedicadas a construir componentes Swing, que se venden por separado a la JDK. En Swing los componentes gráficos pueden poseer mas funcionalidad ya que no son dependientes de la plataforma, como por ejemplo, los componentes Swing no tienen por que ser necesariamente rectangulares, se pueden armar botones redondos. Los botones pueden mostrar tanto texto como imágenes. Su visualización es la misma en todas las plataformas.
Componentes Swing: Contenedores
Son contenedores gráficos que tienen la función de organizar a los distintos componentes gráficos. Estos contenedores proporcionan la infraestructura que necesitan los componentes Swing para el manejo de eventos y su dibujo.
Existen contenedores a nivel general, como JFrame, JDialog y JApplet. Los contenedores a nivel general tienen un papel de contenedores, que contendrán a todos los componentes gráficos, a excepción del componente JMenuBar. Estos en general no son visibles.
Existen contenedores de nivel intermedio, como JPanel, JTabbedPanel y JScrollPane. Estos son de carácter mas visible, y son utilizados, o contenidos por los contenedores de nivel general.
Fue definido como un conjunto de paquetes inicialmente, para la construcción de interfaces graficas. Esta basado en contenedores gráficos mas componentes gráficos, mas modelo de eventos. Los componentes de AWT están implementados en código nativo, es decir que están restringidos a las características de la plataforma.
Por ejemplo si la plataforma no permite imágenes en los botones, entonces no será posible construir un botón con una imagen en lugar del texto. La mayoría de los componentes de AWT son subclases de Component, excepto los contenedores de mayor nivel como Frame, Dialog y Applet.
Estructura de una aplicación AWT
Los componentes de AWT están dentro del paquete java.awt. Todo componente se utiliza dentro de un java.awt.Frame. La pantalla a construir será una subclase de java.awt.Frame. La pantalla estará compuesta por:
Los atributos, que son componentes gráficos. Los métodos, que manejan los eventos que ocurren sobre los componentes gráficos. El método initComponent(), método llamado por el constructor donde se inicializan todos los componentes gráficos.
La actualidad: Swing
Swing, nombre del proyecto dedicado a la construcción de componentes gráficos. Si bien ha
quedado inmortalizado como Swing, su denominación es JFC (Java Fundation Classes) ya que incluye otros paquetes adicionales. Las JFC incluyen un grupo de características para la creación de interfaces graficas. Los componentes Swing GUI es una de las características de las JFC.
Esta basado en contenedores gráficos mas componentes gráficos mas un modelo de eventos. Es el conjunto de paquetes utilizados para la construcción de interfaces graficas. Los componentes Swing están implementados sin código nativo, es decir que están no restringidos a las características de la plataforma.
Por ejemplo, si la plataforma no permite imágenes en los botones, con Swing es posible agregarlos. La mayoría de los componentes de Swing son subclases de JComponent, excepto los contenedores de mayor nivel como JFrame, JDialog y JApplet. Swing utiliza algunas clases de AWT.
Estructura de una aplicación Swing
Los componentes de Swing están dentro de paquetes como javax.swing. Todo componente grafico se utiliza dentro de un javax.swing.JFrame. La pantalla a construir será una subclase de javax.swing.JFrame.
A diferencia de los componentes de AWT, los componentes Swing comienzan con la letra J. Por ejemplo, un marco en AWT se llama Frame y en Swing se llama JFrame, o un botón en AWT es Button, y en Swing es JButton. La pantalla estará compuesta por:
Los atributos, son componentes gráficos. Los métodos, se manejan como los eventos que ocurren sobre un componente grafico. El método initComponents, método que es llamado por el constructor, donde se inicializan todos los componentes gráficos.
Swing vs. AWT
Ambos representan distintas maneras de armar una interfaz grafica. AWT es el primer framework de Java para construcción grafica y luego nace Swing. Los componentes AWT están implementados con código nativo mientras que los componentes Swing no.
Por esta razón los componentes Swing pueden tener más funcionalidad ya que no están restringidos a las características comunes de cada plataforma. Como regla, en Swing los componentes deben ser añadidos a objetos JPanel y no directamente a JFrame.
Swing como negocio
Existen empresas dedicadas a construir componentes Swing, que se venden por separado a la JDK. En Swing los componentes gráficos pueden poseer mas funcionalidad ya que no son dependientes de la plataforma, como por ejemplo, los componentes Swing no tienen por que ser necesariamente rectangulares, se pueden armar botones redondos. Los botones pueden mostrar tanto texto como imágenes. Su visualización es la misma en todas las plataformas.
Componentes Swing: Contenedores
Son contenedores gráficos que tienen la función de organizar a los distintos componentes gráficos. Estos contenedores proporcionan la infraestructura que necesitan los componentes Swing para el manejo de eventos y su dibujo.
Existen contenedores a nivel general, como JFrame, JDialog y JApplet. Los contenedores a nivel general tienen un papel de contenedores, que contendrán a todos los componentes gráficos, a excepción del componente JMenuBar. Estos en general no son visibles.
Existen contenedores de nivel intermedio, como JPanel, JTabbedPanel y JScrollPane. Estos son de carácter mas visible, y son utilizados, o contenidos por los contenedores de nivel general.
--JFrame
Es la clase
utilizada para la construcción de una ventana. Representa a una ventana
primaria. Es la ventana de mayor nivel dentro de una aplicación. Sirve como
contenedor de los componentes.
--JDialog
Es la clase utilizada para la construcción de una ventana secundaria. Es una ventana dependiente de una ventana primaria. Permite dialogar con el usuario.
--JApplet
El JApplet es la clase utilizada para la construcción de Applets que corren en navegadores. Representa el área de una aplicación dentro de una ventana de un navegador.
--JPanel
JPanel es un contenedor de nivel intermedio. JPanel tiene como propósito simplificar el posicionamiento de componentes.
--Palette Window
Contiene los ocmponentes gráficos para agregar a los formularios. Puede visualizar los componentes como iconos, o como iconos con nombre. Posee tanto los componentes AWT como los de SWING.
--Inspector Window
Visualiza la jerquia de componentes del formulario seleccionado. Los componentes visibles por el usuario son visualizados dentro del formulario. Los componentes no visibles por el usuario son visualizados dentro del ítem, other components.
--Properties Window
Visualiza las opciones a setear del componente seleccionado. Visualiza las propiedades del componente seleccionado
MDI, Documento de Multiples Interfaces
--JDialog
Es la clase utilizada para la construcción de una ventana secundaria. Es una ventana dependiente de una ventana primaria. Permite dialogar con el usuario.
--JApplet
El JApplet es la clase utilizada para la construcción de Applets que corren en navegadores. Representa el área de una aplicación dentro de una ventana de un navegador.
--JPanel
JPanel es un contenedor de nivel intermedio. JPanel tiene como propósito simplificar el posicionamiento de componentes.
--Palette Window
Contiene los ocmponentes gráficos para agregar a los formularios. Puede visualizar los componentes como iconos, o como iconos con nombre. Posee tanto los componentes AWT como los de SWING.
--Inspector Window
Visualiza la jerquia de componentes del formulario seleccionado. Los componentes visibles por el usuario son visualizados dentro del formulario. Los componentes no visibles por el usuario son visualizados dentro del ítem, other components.
--Properties Window
Visualiza las opciones a setear del componente seleccionado. Visualiza las propiedades del componente seleccionado
MDI, Documento de Multiples Interfaces
El hecho de
necesitar agrupar funcionalidades distintas en una única aplicación genera la
necesidad de ejecutar una única aplicación y tener acceso a resolver varias
funcionalidades.
Un ejemplo
de esto es la aplicación de una clínica donde se necesita resolver en una misma
aplicación el concepto de turnos para los pacientes, agendas de los médicos y
datos personales e historias clínicas de los pacientes.
Todo esto
puede ser agrupado en un mismo sistema, en una misma aplicación al poder
ejecutar varias interfaces o varias ventanas dentro de una ventana principal.
El modo de acceder a estas multiples ventana de a una puede lograrse a través de
un menú de selección de la funcionalidad que se requiere utilizar.
En nuestro
ejemplo conceptual podemos tener un Menu Pacientes, y un submenú Datos
Personales, de modo tal de resolver los temas de los datos personales del
paciente, luego un submenú Historia Clinica, donde aparecen la lista de
consultas y se puede seleccionar que se resolvió como diagnostico en cada
consulta, luego un submenú de Turnos del paciente, donde se consoliden los
datos de asiganacion de pacientes a médicos desde la perspectiva de un
paciente.
Como otro menú
podemos tener el Menu Medico, el cual puede tener un submenú Datos Personales
del Medico, por ejemplo datos de
contactos y horarios en los que se lo puede encontrar, luego un submenú Agenda
Semanal, donde se puede acceder a la información de agenda diaria del medico,
que pacientes ya tiene asignados en que horarios y en que momento queda libre
para una nueva asignación.
Logicamente
se espera que todas estas ventana internas, ventanas que se disparan a partir
de los submenúes vivan dentro de la aplicación de la ventana principal, de modo
de poder abrir varias ventanas internas y poder pasar de una a otra sin
cerrarlas.
Pasos para construir una aplicación MDI
Pasos para construir una aplicación MDI
1. Generamos
un JFrame nuevo, clic derecho en nuestro paquete -> New -> JFrame Form, y
le asignamos el nombre VentanaPrincipal
2. Dentro
de VentanaPrincipal agregamos un JMenuBar, que encontramos como elemento de la
solapa derecha, llamada SWING Menús
3. Dentro
de VentanaPrincipal agregamos un JDesktopPane, que encontramos como elemento en
la solapa derecha, llamada SWING Containers
4. Creamos
una clase PacientesDatosPersonalesVentana del tipo JInternalFrame, clic derecho
en nuestro paquete -> New -> JInternalFrame, si no se encuentra hacer clic
en Other y buscar dentro de la carpetita que dice Java.
5. Creamos
la opción de menú PacientesMenu, desde la solapa izquierda de Navigator, clic
derecho sobre JMenuBar, opción Add Menu
6. Creamos
la opción de submenú PacientesDatosPersonalesSubMenu, desde la solapa izquierda
de Navigator, clic derecho sobre el nuevo JMenu antes creado, y Add JMenuItem
7. Damos
lugar a la instanciación de la Ventana Interna
PacientesDatosPersonalesSubMenu, desde clic derecho sobre el JMenuItem recién
creado, opción Events, opción actionPerformed.
8. Dentro
del método agregamos lo siguiente:
PacientesDatosPersonalesVentana pdpv = new PacientesDatosPersonalesVentana();
PacientesDatosPersonalesVentana pdpv = new PacientesDatosPersonalesVentana();
jDesktopPane1.add(pdpv);
pdpv.setVisible(true);
Al correr el programa se tendrá
el menú y submenú y al momento de seleccionar el submenú se disparara la
ventana interna. De esta forma se puede continuar sumando opciones del menú e ítems
de submenú en cada menú.
Y
las ventanas internas se programan independientes unas de las otras como si
fuesen aplicaciones por separado, pero luego funcionaran todas juntas
compartiendo recursos como acceso a la base de datos y otros recursos.
si nos pusieras un ejmplo completo seria bueno :)
ResponderEliminar