Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis...

22
Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco

Transcript of Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis...

Page 1: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

JavaParte II

Taller de Sistemas de Programas

Enero-Marzo 99Prof. : Sandra Zabala, Marilenis Olivera

Ivette C. Martínez, Pedro García, Alejandra Blanco

Page 2: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Applets vs. Aplicaciones – Los programas de Java pueden ser de dos tipos: aplicaciones o

applets.

– Las aplicaciones (stand-alone) son clases que contienen un método main.public class Prueba{

public static void main(String[] argv){

System.out.println(“Esto es una prueba”);

}

}

– Las aplicaciones se corren desde la línea de comando.

C:\JAVA\Aplicaciones\javac Prueba =>Compilación

C:\JAVA\Aplicaciones\java Prueba =>CorridaEsto es una prueba

Page 3: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Applets vs. Aplicaciones

– Los applets son programas que aparecen embebidos en una Página Web.<HTML>

<HEAD>

<TITLE>Prueba de un Applet</TITLE>

</HEAD>

<BODY>

<H1> Demo de un Applet </H1>

<APPLET CODE=“Prueba.class” WIDTH=200 HEIGHT=60>

</APPLET>

</BODY>

</HTML>

Prueba.html

Page 4: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Despliegue de Applets

– El applet puede ser vizualizado en la página Web que lo incluye, a través de un browser.

– Otra opción para visualizar un applet es con la utilidad appletviewer. Esta utilidad despliega el applet como sería visualizado en el browser, pero no muestra nada de la Página propiamente dicha.

• En el ejemplo anterior no aparecería ni el título (prueba de un applet), ni el heading 1 colocado antes de especificar la llamada al applet (Demo de un applet).

Page 5: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

La Clase Applet

– Java provee una clase llamada Applet.

– Para definir un applet se debe extender la clase Applet.Public class Prueba extends Applet{

int x=0;

int y=0;

public void init(){

y=size().height/2;

}

public void paint(Graphics g){

g.drawString(“Esto es una prueba”,x,y);

}

}

Page 6: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ciclo de Vida de un Applet

– Existen cinco métodos de la clase Applet que son invocados automáticamente durante la ejecución de un Applet: * public void init(): Este método es invocado una vez por

el appletviewer o el browser, cuando se carga el applet para ejecutarse. En él se deben realizar todas las inicializaciones necesarias.

* public void start(): Se invoca después de ejecutar el método init y cada vez que el usuario regresa a la página en la que el applet reside, después de haberse ido a otras páginas. Si el applet no hace nada que necesite ser suspendido cuando el usuario se va de la página web actual (animaciones,etc.), no es necesario implementar este método.

Page 7: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ciclo de Vida de un Applet

* public void paint(Graphics g): Este método es invocado para dibujar en el applet una vez que el método init ha terminado de ejecutarse y se ha iniciado la ejecución del start.También se invoca automáticamente cada vez que el applet necesita redibujarse (e.g. solapamiento de ventanas). El objeto g pertenece a la clase abstracta Graphics, para mantener la portabilidad del lenguaje Java. Dicho objeto g sirve para manejar el contexto gráfico del applet.

* public void stop(): Análogo al start, pero para suspender la ejecución. También se ejecuta antes de salir.

* public void destroy(): Normalmente se invoca cuando el usuario sale de la sesión de navegación.

Page 8: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Diseño de la interfaz– Un applet es un programa inherentemente gráfico (se

necesita el contexto gráfico).– Librería para definición y manejo de la interfaz en Java:

Swing (paquete javax.swing).– Jerarquía de herencia de Swing:

Object

Event

Component

CheckboxGroup

Choice

List

Button

Label

Container

Checkbox

TextComponent TextField

Panel Applet

Page 9: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Diseño de la interfaz- Componentes– La interfaz se construye en base a componentes (heredan de

component) gráficos. – Los WIDGETS son los componentes visuales con los que el

usuario puede interactuar mediante el ratón o el teclado.– La interacción con los WIDGETS se maneja a través de Eventos.

Object

Event

Component

CheckboxGroup

Choice

List

Button

Label

Container

Checkbox

TextComponent TextField

Panel Applet

Comp. Vis.

WIDGET

Leyenda:

Page 10: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Diseño de la interfaz-Contenedores– Los contenedores son áreas en las que se pueden colocar

WIDGETS.– Panel y Applet, por herencia, son contenedores.– Los WIDGETS se colocan en el contenedor empleando el

método add de la clase container.

Object

Event

Component

CheckboxGroup

Choice

List

Button

Label

Container

Checkbox

TextComponent TextField

Panel Applet

Page 11: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Administradores de Diseño

– Ubicación de Componentes : Es posible especificar la disposición de las componentes dentro del panel.

– Los administradores de diseño acomodan los componentes en un contenedor. Ej:* FlowLayout: Coloca los componentes secuencialmente (de

izquierda a derecha) en el orden en el que se agregaron (layout por defecto),

* BorderLayout: Acomoda los componentes en cinco áreas: North, South, East, West y Center,

* GridLayout: Acomoda los componentes en filas y columnas.

– Es posible colocar un panel dentro de otro panel.

Page 12: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Administradores de Diseñoimport java.applet.Applet;import java.awt.*;import javax.swing.*;

public class Grid extends Applet {private Button Button1, Button2, Button3, Button4;public void init(){ Button1 = new Button(“Uno”);

Button2 = new Button(“Dos”); Button3 = new Button(“Tres”); Button4 = new Button(“Cuatro”);

setLayout = new GridLayout(2,3);add( Button1 );add( Button2 );add( Button3 );add( Button4 );

}}

Page 13: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Administradores de Diseño

– El diseño u organización de un contenedor se establece con el método setLayout de la clase container. Como el applet es un panel y este es un container es posible hacer:

setLayout = new GridLayout(2,3);

Se define un grid de 2 filas y 3 columnas.

– Los botones se colocan en el Grid en el orden en el que son añadidos.

Page 14: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Administradores de Diseñoimport java.applet.Applet;import java.awt.*;import javax.swing.*;

public class Flow extends Applet {private JTextField t1,t2;private JPanel p1,p2;public void init(){ p1 = new JPanel();

p2 = new JPanel(); p1.setLayout = new FlowLayout(FlowLayout.RIGHT,0,10);p2.setLayout = new FlowLayout(FlowLayout.LEFT,10,0);

t1 = new JTextField(“Texto”); //componente1t2 = new JTextField(“Campo”); //componente2

p1.add( t1 );p2.add( t3 );

add( p1 );add( p2 );}

}

Page 15: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Administradores de Diseño

– El ejemplo anterior es más complicado pues se definen dos páneles y dentro de estos colocan Campos de Texto.

– Hay que establecer el Administrador de diseño de cada panel definido:p1.setLayout = new FlowLayout(FlowLayout.RIGHT,0,10);p2.setLayout = new FlowLayout(FlowLayout.LEFT,10,0);

* Parámetros del Constructor:(FlowLayout.RIGHT,0,10): Alineación de los componentes a la derecha. Cada

componente queda separada por 0 pixels horizontalmente y 10 pixels verticalmente.

– Hay que añadir los Campos de Texto (o cualquier otro componente) a los páneles y, luego, los páneles al applet.

Page 16: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Componentes

– Label : área donde se puede desplegar texto no editable.

– Botón : responde al click del ratón.

– Lista : área donde se despliega una lista de elementos. Estos elementos pueden ser seleccionados.

– Campo de texto : área en la que el usuario introduce datos mediante el teclado.

– Panel : es un contenedor en el que pueden colocarse componentes.

– Checkbox : son botones de estado, tienen valor de encendido/apagado o verdadero/falso.

– Choice : proporciona una lista de elementos entre los cuales el usuario puede escoger.

Page 17: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ejemplo - Label

import java.applet.Applet;import javax.swing.*;

public class MyLabel extends Applet {private Font f;private JLabel noLabel, textLabel;

public void init(){ f = new Font(“Courier”. Font.BOLD, 14);

noLabel = new JLabel(); // llamar al constructor de Label sin textotextLabel = new JLabel(“Este texto se lee”); // llamar al const. de

Label // con string

// llamar al constructor de Label sin textotextLabel.setFont( f ); // fijar el tipo de la fuente// agregar los componentes Label al contenedor Appletadd( noLabel );add( textLabel );

}}

Page 18: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Eventos

– Las GUI se controlan por eventos (acciones asíncronas).

– El manejador de ventanas envía los eventos a los programas java.

– Los eventos se almacenan en objetos de la clase Event que hereda directamente de la clase object.

– Todos los componentes generan eventos, excepto Label y Panel.

Page 19: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ejemplo - Botónimport java.applet.Applet;import java.awt.*;import javax.swing.*;public class MyButtons extends Applet {

private JButton pushButton1, pushButton2;public void init(){ pushButton1 = new JButton(“Pulse aqui”);

pushButton2 = new JButton(); add( pushButton1 );add( pushButton2 );

}public boolean action( Event e, Object o){ if (e.target instanceof Button) {

if (e.target == pushButton1)showStatus( “Usted pulsó: ” + o.toString() );

else if (e.target == pushButton2)showStatus( “Usted pulsó: ” + e.arg() );

return true; }return true;

}}

Page 20: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ejemplo - Botón

– Creación de Botones : etiquetado y sin etiquetar (respectivamente)pushButton1 = new Button(“Pulse aqui”);

pushButton2 = new Button();

No es conveniente declarar otro botón sin etiqueta porque es ambiguo para el usuario y en algunos casos el manejo de eventos identifica los botones por su etiqueta.

– Manejo de Eventos :public boolean action( Event e, Object o)

* Cuando se hace click en un botón, se invoca el método action, el cual devuelve un valor boolean y recibe dos argumentos : Event y Object.

* Event e: almacena información específica acerca del componente que generó el evento y el tipo de evento ocurrido.

* Object o: almacena información específica del componente y relativa al evento. En el caso de un Buton, es la etiqueta del botón.

Page 21: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Ejemplo - Botón

– Discriminación del tipo del componente que generó el evento:if (e.target instanceof Button)

* e.target : identifica al componente que generó el evento.

* Instanceof : determina si un objeto es instancia de una clase.

– Toma de acciones :pushButton1 --> showStatus( “Usted pulsó: ” + o.toString() );

* Acción : “Usted pulsó : Pulse aquí”. El objeto o almacena la etiqueta del botón.

pushButton2 --> showStatus( “Usted pulsó: ” + e.arg() );

* Acción : “Usted pulsó : ”. La variable e.arg almacena la etiqueta del botón. Siempre es idéntico a o.

Page 22: Java Parte II Taller de Sistemas de Programas Enero-Marzo 99 Prof. : Sandra Zabala, Marilenis Olivera Ivette C. Martínez, Pedro García, Alejandra Blanco.

Pueden visitar la pagina http://java.sun.com y en ella el tutorial de Swing y Java, ambos se pueden bajar, se recomiendan en particular los ejemplos del tutorial de Swing, donde se encuentran bien explicados los codigos fuentes de los demos, las

funciones utilizadas y la captura de eventos.

Más información