Abriendo Ventanas en la Pantalla Antes de la
Abriendo Ventanas en la Pantalla • Antes de la versión Java 1. 2 (o Java 2) el paquete que proveía de clases para construir interfaces gráficas era AWT. Ahora tembién existe Swing • Swing debería usarse en vez de AWT porque consume menos recursos, pero es algo más trabajoso de programar • Nosotrosa usaremos el AWT • Las componente básica para abrir ventanas con AWT es el Frame. • Otros elementos (como botones, barras de menús etc. ) deben ser colocados dentro de un Frame
Creando Frames v v Frames son ventanas con un marco que se pueden normalmente mover y cambiar de tamaño. También son capaces de contener barras de menús Un Frame puede crearse de varias maneras: – Frame f = new Frame() – Frame f = new Frame(“Hello”);
Mostrando Frames v Para que se vean los Frames es necesario ponerles un tamaño y hacerlos visibles – f. set. Size(200, 300); – f. set. Visible(true); v // width, height Los siguientes son métodos válidos para la clase – – – void set. Location(int x, int y) void set. Bounds(x, y, w, h); void set. Background(Color c) void set. Cursor(Cursor c) void set. Foreground(Color c) void add(Component c)
Pintando sobre la ventana v v Pondremos un objeto de tipo Canvas sobre la ventana y pintaremos en él. El canvas será luego incluido en el frame. Japan
Pintando sobre una componente v v Es necesario tener el contexto grafico de la componente sobre la que se quiere pintar Este objeto tiene toda la información necesaria para pintar sobre el objeto al cual pertenece Los métodos para pintar se aplican sobre el contexto gráfico, no sobre el Lo último que se pinta quedará sobre lo anterior (tapará lo anteriormente pintado)
Pintando sobre una componente v v En la mayoría de las situaciones obtendremos el contexto gráfico del método paint El método paint es invocado por el sistema operativo del coputador (windows) cada vez que se requiere “pintar” el objeto de nuevo, no es llamado desde dentro del programa. Esto sucede cada vez que el objeto (o parte de él) es tapado por otras ventadas y vuelto a mostrar Cada vez que el objeto es cubierto por otras ventanas el contenido desaparece, por esto hay que pintarlo de nuevo. (ver Japan 2)
Los métodos más comunes v v draw. Line(x 1, y 1, x 2, y 2) draw. Rect(x, y, w, h) x 1, y 1 x, y x 2, y 2 w h v fill. Rect(x, y, w, h) w v draw. Oval(x, y, w, h) x, y h v fill. Oval(x, y, w, h)
Más métodos v v x[0], y[0] draw. Polygon(x[], y[], n) fill. Polygon(x[], y[], n) x[1], y[1] x[4], y[4] n=5 v x[3], y[3] set. Color(colorname) colorname = black, blue, cyan, dark. Gray, gray, orange, white, red, pink, yellow v set. Color(new color(red, green, blue)) x[2], y[2]
Cambiando las letras draw. String(x, y, str) v Podemos cambiar la v apariencia de las letras v x This is the string y Font afont = new font(“Arial”, font. Bold, 20) Todos estos métodos son aplicados al contexto gráfico, no a la componente
Animaciones Hay básicamente 2 maneras de hacer animaciones con el computador 1. 1 - Pintando y borrando figuras de modo que parezcan que se mueven Flicker DOS
Animaciones 2 2. Mostrando imágenes pregrabadas una tras otra, como se hace en los dibujos animados Duke. Viewer 2 dos
Por qué no podemos cerrar las ventanas ? ? ? • En la AWT todas las componentes son “sordas” a la mayoría de los eventos que suceden • Tenemos que ponerles “orejas” para que escuchen los eventos que son generados por el ambiente • Luego tenemos que programar la forma como reaccionar ante los eventos que escuchen estas componentes
Hay una constante comunicación entre el sistema operativo y un programa java Paint Event (does not need special ears) Window Event Mouse movement Event Focus Event Mouse click Event
Poniendole oidos a las componentes v v f. add. Window. Listener( new Oido. Ventana()); . . class Oido. Ventana implements Window. Listener() { public void window. Closing(Window. Event e) { System. out. println("bye "); System. exit(0); } public void window. Activated(Window. Event e) {. . . } } Los métodos están predefinidos por la interfaz (para Window. Listener son 9 y hay que implementarlos todos!!!!) el parámetro que recibe tiene información acerca del evento (quién lo generó, dónde sucuedió) dependiento del tipo de evento (ver Japan 3. java)
Hay diferentes tipos de listeners (orejas) para un conjunto de eventos v void add. Window. Listener(Window. Listener a): para oir eventos de ventanas tales como window. Activated, window. Closing, window. Deactivated, window. Iconified y otros 5 más v void add. Mouse. Listener(Mouse. Listner a): para oir mouse. Released mouse. Clicked, mouse. Pressed, mouse. Entered, mouse. Exited v v void add. Mouse. Motion. Listener(Mouse. Motion. Listener a): para mouse. Moved, mouse. Dragged void add. Action. Listener(Action. Listener a): para action. Performed solamente v !!!!!!importante, esto se usa mucho void add. Key. Listener(Key. Listner a): para key. Pressed, key. Released, key. Typed
Un ejemplo de Eventos del Mouse 400 Color. Window 4 1 5 200 2 Chalk. Board 3 Por cada click se dibujará un círculo rellno de un color distinto con un número ascendente. (see Color. Window. java Chack. Board. java)
Escuchando al Mouse add. Mouse. Listener( new Oido. Mouse() ); public class Oido. Mouse implements Mouse. Adapter { public void mouse. Pressed(Mouse. Event e) { System. out. println("mouse at "+e. get. X()+"-"+e. get. Y()); }. . . Escribir mouse. Released, mouse. Clicked } Localización del click Las coordenadas son locales 0, 0 a la componente !!! 0, 0 es el borde izquierdo superior X - mouse. Released - mouse. Clicked Y
Components y Containers Components son elementos que puedes ser usados para componer interfaces gráficas: botones, áreas de texto, etiquetas, menús etc. . . v Containers son aquellas componentes que pueden contener otras componentes. Frame, Window, Panel. v El Paner se usa generalmente para agrupar un conjunto de componentes en una regíon v
Ejemplo 1. Contemos cuantas veces ha sido presionado un boton Button. Window
Más ejemplos 2. Hagamos otra versión del jalisco, con una variación en la forma de implementar el Action. Listener Jalisco
Seleccionando Imágenes Primero vamos a desarrollar este objeto que contiene una imagen. Image. Viewer 2
Seleccionando imágenes… La lista será Creada con los nombres de archivos de imágenes en el directorio actual
Selecting the image file to load Al seleccionar uno, se creará el objeto Imagen con el archivo seleccionado List. Images
Ubicando Componentes en un Contenedor v v v Hasta ahora siempre habíamos definido que el Layout. Manager de un contenedor era null, Con esto nos hacíamos responsables de ubicar y determinar el tamaño de las componentes que poníamos dentro del contenedor, lo que permanecía fijado, sin importar el tamaño del contenedor Usar un Layout. Manager requeire de menos programación ya que el tamaño y ubicación de las componentes es fijado por aquel, a veces con mejores resultados
v v Los Layout Managers El Flow. Layout manager pone los componentes en una fila de izquierda a derecha (en el orden en que fueron incorporados al contenedor) hasta que no hay más espacio. De ahí empieza a colocarlos en la siguiente línea. (ver Flow 1) El Grid. Layout define una grilla de filas y columnas en donde los componentes deben ser puestos. El tamaño de las componentes es el mismo para todas y se modifica con el tamaño del Frame!!!!. (ver Grid. java ) El Border. Layout manager define 5 regiones en el contenedor: North, South, East, West , y Center para poner las componentes, esto implica que solo 5 componentes pueden ser puestas. (border 1 y 2) Mucha veces estas componentes son paneles que a su vez, contienen otras componentes (ver dibujo. java y votos. java)
Más Componentes v v v Menu: un item en la barra de menú de un Frame. Sólo se pueden poner componentes Menu en un Frame. Estos aparecerán de derecha a izquierda según el orden en que incluyeron Menu. Item: para poner itemes en un menú. Sólo se pueden agregar a un elemento Menú Choice: para tener una lista de valores (Strings) de los cuales elegir Radio. Buttons: botones que se agrupan en conjuntos de entre los cuales uno solo puede estar seleccionado Ver Editor 2. java
Java Applets son programas java que se bajan y corren en el contexto de una página web Request a page Html Animator. class <applet code=Animator. class > </applet> Java program running on the client
Cómo esplicar qué es realmente un applet ? v Para personas espertas en Java es muy fácil: es una extensión de un Panel. Por lo tanto se puede hacer lo mismo Bla Bla The html viewer The applet Bla Bla
How do I link an Applet in my HTML Page ? <HTML> <HEAD> <TITLE> My first Applet </TITLE> </HEAD> <BODY>. . . . Así se adhiere un applet a una página Web <APPLET CODE = “My. Applet 0. class” WIDTH=150 HEIGTH=25> </APPLET>. . . </BODY> Debe existir un applet programado en un archivo con el Nombre My. Applet. java y complado
Programando Applets El Hello world applet import java. applet. *; import java. awt. *; public class My. Applet 0 extends Applet { public void paint(Graphics g) { g. draw. String(“Hello World”, 50, 25); } }
Ejemplos de Applets 1. Que dibuja este Applet first. Applet. html My. Applet 1. java 2. Un applet que reacciona a clicks del mouse El Clock como Applet second. Applet. html My. Applet 2. java Clock. Applet. html Clock. X 4 Applet. java
Un Applet especial 4. Este applet cargará otra página web site. Text. Applet. html 5. un applet con un thread clock 2 Applet. html site. Text. Applet. java Clock. X 2 Move. java
- Slides: 32