Está en la página 1de 12

Programacin de Interfaces Grficas en

Java
AgustnJ.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.
ELO329:DiseoyProgramacinOrientadosaObjetos
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
MenuBar

ContentPane
conunlabel

ELO329:DiseoyProgramacinOrientadosaObjetos
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 capas, panel de
contenido, y una barra de men opcional.

ELO329:DiseoyProgramacinOrientadosaObjetos
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

ELO329:DiseoyProgramacinOrientadosaObjetos
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

ELO329:DiseoyProgramacinOrientadosaObjetos
Mens (as es en plural)
Algunos elementos de un men
JMenuBar

JMenu

JMenuItem

JMenu
JMenuItem

ELO329:DiseoyProgramacinOrientadosaObjetos
Mens: 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);
Crear algunos JMenuItem item1, item2;
itemes del menu item1 = new JMenuItem(Data 1);
Capturar eventos item2 = new JMenuItem(Data 2);
Agregar item al // Action listeners!!
menu menu.add(item1);
menu.add(item2);
Agregar el menu
mb.add( menu );
al menubar f.setJMenuBar( mb );
Incorporar el
menubar
Por ejemplo de men ms completo ver: MenuDemo.java
ELO329:DiseoyProgramacinOrientadosaObjetos
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 por la aplicacin,
considere redefinir el mtodo:
protected void paintComponent(Graphics). ste es invocado
cada vez que una componente grfica requiere ser re-pintada.

ELO329:DiseoyProgramacinOrientadosaObjetos
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.
Ver ejemplo: Sketch.java y MouseTest.java
ELO329:DiseoyProgramacinOrientadosaObjetos
Mtodo: repaint
Diagrama de secuencia para repintado.
Objeto Contenedorde
grfico ObjetosGrficos
Hayun propio
Cambioen
datos repaint
LaJVMdetecta
necesidadde
refresco

paintComponent

ELO329:DiseoyProgramacinOrientadosaObjetos
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

ELO329:DiseoyProgramacinOrientadosaObjetos

También podría gustarte