0% encontró este documento útil (0 votos)
4 vistas13 páginas

Programación de GUI en Java: AWT y Swing

El documento aborda la programación de interfaces gráficas en Java, destacando la evolución de AWT a Swing para superar problemas de compatibilidad entre plataformas. Se describe la estructura de un JFrame y sus componentes, así como la importancia de distinguir entre el modelo y la vista de los objetos gráficos. Además, se explican métodos como repaint y el uso de Java 2D para gráficos más avanzados.

Cargado por

francis barrios
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas13 páginas

Programación de GUI en Java: AWT y Swing

El documento aborda la programación de interfaces gráficas en Java, destacando la evolución de AWT a Swing para superar problemas de compatibilidad entre plataformas. Se describe la estructura de un JFrame y sus componentes, así como la importancia de distinguir entre el modelo y la vista de los objetos gráficos. Además, se explican métodos como repaint y el uso de Java 2D para gráficos más avanzados.

Cargado por

francis barrios
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

Programación de Interfaces Gráficas en

Java

Agustín J. González
ELO329
AWT y Swing
En sus orígenes Java introdujo la AWT (Abstract Window
Toolkit). Ésta “creaba” los objetos delegando su creación y
comportamiento a herramientas nativas de la plataforma donde
corre la Máquina Virtual Java.
Este esquema condujo a problemas por diferencias en distintas
plataformas y S.O.
La solución fue desarrollar todos los objetos de la GUI basados
sólo en elementos muy básicos y comunes en todas las
plataformas. Así surge Swing. (Ver demo de la JFC
[Link]
Junto a la JDK vienen demos de Java. Ver la carpeta que
contiene el ejecutable javac y podrá encontrar el directorio
demo un nivel más arriba.

ELO-329: Diseño y Programación Orientados a Objetos


Desplegando información
Todos los objetos gráficos en una aplicación
Java forman una jerarquía. En la mayor
jerarquía está el JFrame, JDialog, y un JApplet.
Ahora veremos la estructura de los JFrame.
Ejemplo:
Frame
Menu Bar

Content Pane
con un label

ELO-329: Diseño y Programación Orientados a Objetos


Estructura de un JFrame

El RootPane viene con el JFrame. También lo


traen los JInternalFrame y los otros
contenedores de ventanas superiores
(autónomas): JDialog, JApplet, JFrame.
El root pane tiene 4 partes: vidrio, panel de
capas, panel de contenido, y una barra de
menú opcional.
ELO-329: Diseño y Programación Orientados a Objetos
Panel de vidrio
Oculto por omisión (default).
Si se hace visible, es como una hoja de vidrio
sobre todos las partes del panel raíz.
Es transparente, a menos que se implemente
un método para pintarlo.
Puede interceptar los eventos de la ventana
panel de contenido y menú.
Ver [Link]

ELO-329: Diseño y Programación Orientados a Objetos


Layered Pane (panel de capas múltiples)
Contiene la barra de menú opcional y el panel
para poner contenidos.
Puede también contener otras componentes en
orden especificado por eje Z (profundidad).
Ver más detalles en curso tutorial de Swing
Ver [Link]

ELO-329: Diseño y Programación Orientados a Objetos


Menús (así es en plural)
Algunos elementos de un menú
JMenuBar

JMenu

JMenuItem

JMenu
JMenuItem

ELO-329: Diseño y Programación Orientados a Objetos


Menús: Ejemplo

Crear un frame JFrame f = new JFrame(“MenuT”);


Crear un menubar JMenuBar mb = new JMenuBar();
Crear a un menu JMenu menu = new JMenu(“Choose”);
JMenuItem item1, item2;
Crear algunos
item1 = new JMenuItem(“Data 1”);
itemes del menu item2 = new JMenuItem(“Data 2”);
Capturar eventos // Action listeners!!
Agregar item al [Link](item1);
menu [Link](item2);
Agregar el menu [Link]( menu );
[Link]( mb );
al menubar
Incorporar el
menubar
Por ejemplo de menú más completo ver:
ELO-329: Diseño y Programación Orientados a Objetos
Modelos y Vistas de Objetos
Asociado a cada objeto gráfico debemos distinguir el
modelo de su vista.
El modelo es el conjunto de atributos de un objeto,
corresponde a la representación en memoria de un objeto.
Por ejemplo, para un termómetro, basta el atributo double
temperatura.
La vista es la apariencia visual que decidimos dar al
objeto. Por ejemplo, un termómetro puede ser digital,
columna de mercurio, la intensidad de un color, etc.
Por un lado tenemos el cambio del estado de un objeto y
por otro el cambio en la vista correspondiente a ese nuevo
estado.
Objetos Swing mantienen esa consistencia, pero debemos
ocuparnos de ello en nuestros objetos gráficos.

ELO-329: Diseño y Programación Orientados a Objetos


Pintado de Componentes
En general hay que tratar de usar componentes estándares de
Swing. Ellas se encargan de hacer su (re)pintado en pantalla
cuando corresponda.
Este es el caso de Labels, buttons, componentes de texto, icons,
borders.
Si luego de hacer visible un contenedor de componentes éste se
modifica, llamar a validate(). Con esto logramos actualizar su
despliegue. Ver [Link]
Para crear objetos gráficos nuevos, podemos heredar de JPanel.
Cuando la interfaz posee objetos “dibujados” por la aplicación,
debemos redefinir el método:
protected void paintComponent(Graphics). Éste es invocado cada
vez que una componente gráfica requiere ser re-pintada.

ELO-329: Diseño y Programación Orientados a Objetos


Método: repaint
Cuando una componente cambia alguno de sus
atributos, por ejemplo un label cambia su texto,
este método es invocado por la componente
sobre un panel (en rigor sobre una instancia
JComponent) que lo contiene. Se consigue así
itinerar el repintado de las componente
gráficas.
Si nosotros hemos construido líneas, círculos,
etc. debemos llamar a repaint() cuandi
cambiamos sus atributos para solicitar al panel
el llamado a paintComponent en forma
explícita.
Ver ejemplo: [Link] y [Link]
ELO-329: Diseño y Programación Orientados a Objetos
Método: repaint
Diagrama de secuencia para repintado.
Objeto Solicitamos
Contenedor de
gráfico repintado Objetos Gráficos
Hay un
propio
Cambio en
datos repaint
La JVM detecta
necesidad de
refresco

paintComponent

Como argumento
va un “graphics”
para hacer pintado

ELO-329: Diseño y Programación Orientados a Objetos


Java 2D
Java 2D provee gráficos, texto e imágenes de
dos dimensiones a través de extensiones de
Abstract Windowing Toolkit (AWT)
Incluye clases para Rectángulos, Líneas,
Elipses.
La clase Graphics2D, a través de su método
draw, permite dibujar estos objetos debido a
que todos ellos implementan la interfaz shape.
Ver demo: [Link]

ELO-329: Diseño y Programación Orientados a Objetos

También podría gustarte