Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller de Programacin I
Semana V Inacap rea Informtica y Telecomunicaciones todos los derechos reservados
1
Taller de programacin I
Indice
Indice
I II Unidad 2: Diseo de interfaces grficas Utilizando Swing Aprendizajes esperados
JTextField. JtextArea. JpasswordField. JLabel. JcheckBox JRadioButton: Jlist: JComboBox: JMenu:
03 03 04
13 13 14 14 14 14 14 15 15
16 20 20
Taller de programacin I
Taller de programacin I
Taller de programacin I
Taller de programacin I
Crear una ventana es mucho ms sencillo de lo que crees debido a que la mayora los controles y la forma en que se dibujan y se comportan ya estn diseados en Java, todas estas clases se encuentran dentro del package javax.swing (javax viene de java extendido), por ejemplo, cuando deseas crear una ventana Jframe desde ahora en adelante, basta con crear una clase cualquiera, la cual hereda de la clase Jframe, esto permitir que la clase herede toda la funcionalidad necesaria para comportarse como tal.
Una vez la clase hereda de JFrame bastar con instanciar la clase desde main, para verificar que esta se comporta como una ventana gracias a la herencia realizada.
Taller de programacin I
En este caso, el objeto es creado y luego mediante su comportamiento setSize se asigna su ancho (800) y largo (600), una vez las dimensiones han sido especificada la ventana se pone visible entregando true a setVisible. Una imagen como esta aparecer en su pantalla.
Un Jframe es un objeto en el cual podemos agregar todos los controles que deseamos (botones, cajas de textos, scrolls, etc.) sin embargo la forma en la que se redibuja en Jframe no es tan eficiente como lo hace el objeto Jpanel, por ello lo ms frecuente es agregar un Jpanel sobre el Jframe y sobre l agregar los controles que necesitemos:
Taller de programacin I
El cdigo anterior por ejemplo agrega un comportamiento llamado agregarPanel(), en l se crea un objeto de tipo Jpanel, el cual se agrega a Miventana, luego se establece el tamao, el cual es en este caso el mismo que el de la ventana, por ltimo, se establece su color en rojo. La siguiente imagen muestra el resultado de la ejecucin:
Existen un objeto el cual es el encargado de posicionar los elementos dentro de la ventana, este objeto recibe el nombre de layout, existen varios tipos de layout, entre los cuales debes seleccionar el que ms se acomode a lo que deseas lograr. 1. Null: permite posicionar elementos sin ayuda de ningn tipo, es decir no hay alineamiento u otras ayudas, el programador decide la posicin exacta que necesita para el control. 2. Flow: ordena los elementos en fila (uno al lado del otro) siempre y cuando quepan en la ventana actual. 3. Box: permita posicionar elementos de forma horizontal y vertical. 4. Border: los elementos son posicionados pegados a la derecha, izquierda arriba, abajo o al centro. 5. Grid: permite posicionar los elementos como si se tratase de una matriz. 6. Card: hace que el control ocupe el mayor espacio posible (slo una vez visible).
Taller de programacin I
Antes de continuar es importante que aprendas a utilizar alguna IDE de desarrollo para la creacin de interfaces grficas de usuario, estas permiten hacer el proceso inverso, es decir primero se dibuja y a partir de lo que se desea lograr se genera el cdigo necesario, as como tambin permite asociar y codificar los eventos a cada uno de los controles, veamos cmo realizar lo que hemos hecho hasta ahora utilizando una IDE.
Taller de programacin I
Nota que utilizando NetBeans puedes agregar un objeto de tipo Jframe, al hacerlo vers como la venta es de forma inmediata mostrada, de esta forma ayuda al programador a extraerse del cdigo que genera esta interfaz, as hay ms tiempo para la productividad. La siguiente imagen muestra como luce una ventana agregada con NetBeans
Taller de programacin I
Cuando se est trabajando de esta forma se le suele llamar tiempo de diseo. Desde aqu puedes agregar de forma visual botones, cajas te texto, etc. A la izquierda de la ventana aparecer una ventana que luce de la siguiente forma:
Desde esta ventana puedes seleccionar los controles que deseas agregar, para hacerlo basta con arrastrarlos hasta la ventana.
Taller de programacin I
Incluso una vez estn los controles posicionados en la ventana puedes cambiar sus atributos, ya que los controles son en realidad instancias de una clase y por ello tienen atributos, por ejemplo, el botn es un objeto que proviene de la clase Jbutton. Es importante que comprendas que esto no es magia y que hay cdigo que se est generando, para que cuando comience el programa dibuje lo mismo que has realizado en tiempo de diseo, el cdigo en cuestin puede verse cambiando la vista de diseo a cdigo.
La siguiente imagen muestra parte del cdigo que es auto generado por NetBeans:
Cada vez que agregas un control el objeto recibe un nombre por defecto, el cual se genera basndose en su tipo y un nmero, por ejemplo jButton1, si agregas otro ser jButton2, es recomendable cambiar los nombres ya que en determinado momento querrs referirte a ellos por cdigo y no podrs recordar cual es cual, por suerte no necesitas ir al cdigo auto generado, basta con presionar el botn derecho sobre el control y seleccionar la opcin cambiar nombre de variable.
Es recomendable que para que puedas distinguir el tipo de los objetos luego utilices las tres primeras letras del tipo y un nombre descriptivo, por ejemplo btnSalir, lo cual asume un botn que permite salir de la ventana actual.
Taller de programacin I
As como puedes cambiar el nombre de las variables, tambin es posible cambiar los atributos del objeto en tiempo de diseo, la ventana de propiedades muestra una lista con todos los atributos que un objeto tiene, la siguiente imagen muestra las propiedades ms importante para un objeto de tipo Jbutton.
Dnde: Background: permite seleccionar el color de fondo. Font: la fuente con la que se dibuja el texto. Foreground: el color de la fuente Icon: el cono que acompaar al texto. Mnemonic: combinacin de teclas asociadas al control. Text: permite establecer el texto que mostrar el control. tooltipText: texto de ayuda que se mostrar al posicionar el mouse sobre el control.
JTextField.
Este control permite obtener informacin por parte del usuario, toda la informacin que el usuario ingrese se puede obtener invocando al mtodo getText del control.
JtextArea.
Este control es muy similar al textField, la diferencia radica en que permite al usuario escribir texto en ms de una lnea.
Taller de programacin I
JpasswordField.
Permite al usuario escribir texto en una sola lnea, la diferencia est en que los caracteres escritos son remplazados por otro carcter con e l fin de ocultar lo que escribe.
JLabel.
Es uno de los controles ms simples, este control presenta un texto, el que se suele utilizar para mostrar informacin al usuario.
JcheckBox
Permite al usuario poner o sacar un ticket, este control se utiliza cuando el usuario debe decidir entre verdadero o falso.
JRadioButton:
Permite al usuario seleccionar slo una opcin entre un grupo de ellas.
Jlist:
Muestra seleccionar uno o varios elementos de lista de elementos.
Taller de programacin I
JComboBox:
Permite seleccionar slo un elemento desde una lista desplegable.
JMenu:
Permite agregar un men a nuestro Jframe, un men es una coleccin de controles agrupados de forma horizontal en la parte superior de la venta, un men est compuesto de labels, checkBoxs y radiobuttn. El elemento MenuItem corresponde al elemento que vemos a diario en todos los software el cual muestra una lista de acciones que podemos realizar, siendo el ms popular el elemento que aparece de los primeros en el men como Archivo.
Taller de programacin I
Una vez realizado presione el botn derecho del mouse para ver una lista de eventos:
Taller de programacin I
Los eventos se encuentran agrupados como muestra la imagen anterior, comenzaremos aprendiendo los comunes, dirjase a mouse, all encontrars 5 eventos:
mouseClicked: ocurre cada vez que el usuario hace clic sobre el control del mouse. nouseEntered: ocurre cuando el mouse entra al control. mouseExited: ocurre cuando el mouse sale. mousePressed:ocurre cuando el usuario presiona cualquier botn del mouse sobre el botn. mouseReleased:ocurre cuando un botn se suelta estando sobre el control.
Vamos codificar el evento mouse pressed, ntese que al seleccionarse de forma automtica se agrega el evento que responder cada vez que este evento ocurra:
Taller de programacin I
Una de las caractersticas ms significativas en los eventos, es que el comportamiento que se ejecutar no se codifica dentro del objeto que lo produce, sino dentro del que lo contiene, esto tiene una ventaja significativa, dado que el evento al crea en la ventana y esta a su vez tiene una colaboracin con el resto de los controles, de esta forma la ejecucin de un control es capaz de alterar los atributos y estados de otros controles, vemoslo con un ejemplo:
En el cdigo que muestra la imagen anterior, la palabra this no hace referencia al botn sino a la clase MiVentana y mediante setTitle cambiaremos el ttulo. La siguiente imagen ilustra lo que sucede al presionar el botn:
Vamos a repetir la accin, pero esta vez cambiaremos el texto de una etiqueta, para ello agregamos un jLabel a nuestra ventana, cambiamos su texto y nombre de variable como muestra la imagen:
Taller de programacin I
De esta forma mediante setText cambiamos el texto al label, siendo este el resultado:
Es importante que conozcas que cada evento que generes contiene adems informacin con respecto al evento, al principio de este captulo se mencion que al producir el evento de un control este empaqueta toda la informacin asociada, dicha informacin es recibida como un objeto entre los parmetros que recibe el evento donde el tipo de objeto depender del tipo de evento. Por ejemplo, MouseEvent tiene relacin con los eventos del mouse KeyEvent con los del teclado, FocusEvent cuando el objeto recibe o pierde el foco. El foco en informtica es cuando un control se encuentra seleccionado, por ejemplo cuando tienes dos ventanas slo una estar marcada como activa y la otra en segundo plano, entonces la ventana activa es la que tiene el foco, cuando cambies a la otra ventana, la que estaba activa ejecutar el evento de perdida de foco. Pasando el foco a la ventana antes inactiva, esta condicin se da entre ventanas o cualquier otro capaz de tener foco. Por ejemplo, nuestro mtodo recibe un objeto de tipo MouseEvent, en l se encuentra la informacin asociada al evento, dado que el evento que programamos es MousePressed podemos obtener del objeto recibido datos como qu botn del mouse presion o en qu coordenada X o Y del objeto presiono, en el siguiente ejemplo slo si presiona el botn derecho se muestra la coordenada en la que el mouse hizo clic sobre el botn.
Como puedes ver del objeto evt de tipo MouseEvent se puede obtener tanto el botn (en este caso el 3) como la coordenada X.
Taller de programacin I
Resumen de la Semana
Esta semana aprendiste a desarrollar aplicaciones que permiten la interaccin con el usuario mediante una interfaz grfica.