Вы находитесь на странице: 1из 12

Programacin de Interfaces Grficas en Java

Agustn J. Gonzlez ELO329/ELO330

AWT y Swing
En sus orgenes Java introdujo la AWT (Abstract Window Toolkit). sta creaba los objetos delegando su creacin y comportamiento a herramientas nativas de la plataforma donde corre la Mquina Virtual Java. Este esquema condujo a problemas por diferencias en distintas plataformas y S.O. La solucin fue desarrollar todos los objetos de la GUI basados slo en elementos muy bsicos y comunes en todas las plataformas. As surge Swing. (Ver demo de la JFC en /usr/local/jdk/demo/jfc/SwingSet2 en aragorn o en su versin de Java) Para correr los demos de Java, stos deben ser instalados. Ver la carpeta que contiene el ejecutable javac y podr encontrar el directorio demo un nivel ms arriba.
ELO-329: Diseo y Programacin Orientados a Objetos

Desplegando informacin
Todos los objetos grficos en una aplicacin Java forman una jerarqua en donde la mayor jerarqua est un JFrame, un JDialog, o un JApplet.

Ahora veremos la estructura de los JFrame.


Ejemplo:
Frame Menu Bar Content Pane con un label

ELO-329: Diseo y Programacin Orientados a Objetos

Estructura de un JFrame

El RootPane viene con el JFrame. Tambin lo traen los JInternalFrame y los otros contenedores de ventanas superiores (autnomas): JDialog, JApplet, JFrame. El root pane tiene 4 partes: vidrio, panel de ELO-329: Diseo y Programacin Orientados Objetos barra de capas, panel de contenido, y auna

Panel de vidrio
Oculto por omisin (defecto).

Si se hace visible, es como una hoja de vidrio sobre todos las partes del panel raz.
Es transparente, a menos que se implemente un mtodo para pintarlo. Puede intercepta los eventos de la ventana panel de contenido y men. Ver GlassPaneDemo.java

ELO-329: Diseo y Programacin Orientados a Objetos

Layered Pane (panel de capas mltiples)


Contiene la barra de men opcional y el panel para poner contenidos. Puede tambin contener otras componentes en orden especificado por eje Z (profundidad).

Ver ms detalles en curso tutorial de Swing


Ver LayeredDemo.java

ELO-329: Diseo y Programacin Orientados a Objetos

Mens (as es en plural)


Algunos elementos de un men
JMenuBar

JMenu
JMenuItem JMenu

JMenuItem

ELO-329: Diseo y Programacin Orientados a Objetos

Mens: Ejemplo
Crear un frame JFrame f = new JFrame(MenuT); Crear un menubar JMenuBar mb = new JMenuBar(); JMenu menu = new JMenu(Choose); Crear a un menu JMenuItem item1, item2; item1 = new JMenuItem(Data 1); Crear algunos itemes del menu item2 = new JMenuItem(Data 2); // Action listeners!! Capturar eventos menu.add(item1); menu.add(item2); Agregar item al mb.add( menu ); menu f.setJMenuBar( mb ); Agregar el menu al menubar IncorporarELO-329: el Diseo y Programacin Orientados a Objetos

Pintado de Componentes
En general hay que tratar de usar componentes estndares 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 una componente, sta se modifica considerar el llamado a validate(). Con esto estamos pidiendo que se actualice su despliegue. Ver CreaBotones.java Cuando la interfaz posee objetos dibujados ELO-329: Diseo y Programacin Orientados a Objetos por la aplicacin, considere redefinir el mtodo:

Mtodo: repaint
Cuando una componente cambia alguno de sus atributos, por ejemplo un label cambia su texto, este mtodo 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 grficas. Si por el contrario, la hemos construido nosotros en base a lneas, etc. debemos llamar a repaint() para solicitar al panel el llamado a paintComponent en forma explcita. ELO-329: Diseo y Programacin Orientados a Objetos Ver ejemplo: Sketch.java y MouseTest.java

Mtodo: repaint
Diagrama de secuencia para repintado.
Objeto grfico propio repaint
La JVM detecta necesidad de refresco

Contenedor de Objetos Grficos

Hay un Cambio en datos

paintComponent

ELO-329: Diseo y Programacin Orientados a Objetos

Java 2D
Java 2D provee grficos, texto, e imgenes de dos dimensiones a travs de extensiones de Abstract Windowing Toolkit (AWT) Incluye clases para Rectngulos, Lneas, Elipses. La clase Graphics2D, a travs de su mtodo draw, permite dibujar estos objetos debido a que todos ellos implementan la interfaz shape. Ver demo: ShapesDemo2D.java

ELO-329: Diseo y Programacin Orientados a Objetos