Beruflich Dokumente
Kultur Dokumente
Utilizacin de Mens
Objetivo
Desarrollar una aplicacin con barras de mens, con mens contextuales y con
barra de herramientas.
Objetivos especficos:
Introduccin
Muchas aplicaciones simples tienen un formulario y varios componentes, pero sin
lugar a dudas su aspecto puede ser mejorado significativamente utilizando mens
y barras de herramientas. Estos componentes son familiares para los usuarios de
interfaces grficas, por lo que resulta prcticamente indispensable el darle a
conocer a los desarrolladores de aplicaciones, el cmo incorporarlas en sus
proyectos.
Un men es una forma de proveer al usuario de un conjunto de rdenes
congruentes, agrupadas bajo un mismo ttulo. Adems cada opcin que aparezca
en la barra de mens, contar con su elemento correspondiente en la barra de
herramientas.
Las opciones en el men, al ser seleccionadas pueden mostrar cualquiera de tres
elementos: rdenes, submens y separadores. Cuando se hace clic en una orden
o se selecciona y se pulsa Enter, se ejecuta una accin o se despliega una caja de
dilogo. Cuando una orden es seguida por tres puntos (), es seal de que se
desplegar una caja de dilogo. Cuando se selecciona un submen, se despliega
una nueva lista de elementos. Un separador sirve para crear secciones de
elementos que los agrupen en funcin de sus actividades afines.
Para crear una barra de mens se dispone bsicamente de las clases JMenuBar,
JMenu y JMenuItem. La clase JMenuBar al ser arrastrada hacia un formulario, se
ubica automticamente en la parte superior del formulario y muestra dos opciones
por defecto, File y Edit. Ambas opciones estn vacas al inicio. A cada opcin se
Dr.
Hernn
de
la
Garza
Prctica 4 - 1
les van aadiendo los elementos que se consideren necesarios. Un paso posterior
es el asociar a cada elemento del men con una accin a realizar.
Una barra de herramientas es una ventana que normalmente contiene botones
grficos, aunque tambin puede contener otros componentes como son cajas de
texto o listas desplegables. Hacer clic en un elemento de la barra de herramientas,
produce los mismos eventos que la opcin equivalente en la barra de mens. El
contar con la barra de herramientas, permite realizar la tarea en una sola accin
sin tener que abrir la barra de mens. La clase principal que se utiliza es
JMenuBar.
Los mens contextuales o emergentes (popup men) se muestran al hacer clic en
el botn derecho del mouse o del trackpad. Estos mens estn asociados a un
componente. Para su construccin se utiliza la clase JpopupMenu, y una vez
creados utilizan los mismos elementos que las opciones en la barra de mens.
Computadora o laptop
Software: NetBeans 7.2 en adelante
Metodologa
Procederemos a utilizar los diferentes tipos de mens tomando como ejercicio el
desarrollo de un mini editor de texto, en el que se puedan realizar algunas de las
acciones comunes como son las de copiar, pegar, borrar, abrir archivo, guardar
archivo, y salir. Estas tareas podrn ser realizadas escogiendo una opcin del
men o bien directamente por un botn de la barra de herramientas.
Dr.
Hernn
de
la
Garza
Prctica 4 - 2
Prctica 4 - 3
Prctica 4 - 4
Puede constatar que no est activado el corte de lneas ya que cuando se alcanza
el borde derecho la lnea se contina escribiendo. Para activar que las lneas se
corten al llegar al borde, seleccione el componente TextArea y marque la
propiedad lineWrap (a true), con lo cual queda lista esta caracterstica. Si quisiera
que adems cortara palabras, entonces se activa la propiedad wrapStyleWord.
Prctica 4 - 5
En este punto el editor nos indica que hay un error y como sabemos, cuando se
involucra una interface, es obligatorio definir TODOS sus mtodos abstractos. Por
lo tanto, haga clic en el globo rojo en el margen izquierdo, lo que nos muestra una
pequea ventana con algunas acciones posibles para corregir el problema. La
primera de estas acciones dice implement all abstract methods, y es la que se
selecciona.
Aada la siguiente variable arriba del constructor:
private
java.awt.datatransfer.Clipboard
portapapeles;
Prctica 4 - 6
Prctica 4 - 7
Dr.
Hernn
de
la
Garza
Prctica
4
-
8
Por lo pronto la opcin que programaremos del men File ser la de Exit.
Para ello hay varias maneras de generar el evento de actionPerformed.
Decidimos dar doble clic sobre la palabra Exit de manera que se despliegue
la ventana de cdigo con las siguientes instrucciones aadidas
automticamente:
Paso 10. A la opcin Edit de la barra de men, adale tres Menu Item :
Cortar, con mnemnico T, accelarator keys Ctrl + X, nombre jmiCortar.
Copiar, con mnemnico C, accelerator keys Ctrl + C, nombre jmiCopiar.
y Pegar, mnemnico P, accelarator keys Ctrl + V, nombre jmiPegar.
Paso 11. Las acciones que ofrece el men tambin sern implementadas en la
barra de herramientas por lo que se hace conveniente poner el cdigo
correspondiente a cada opcin, dentro de un mtodo y evitar duplicidad de
instrucciones. As, la llamada al mtodo se har desde el men o desde la barra
Prctica 4 - 9
Paso 12. Terminamos de programar las dos acciones pendientes del men Edit.
Doble clic en Item Copiar. Aqu podemos llamar al mtodo copiar que definimos en
Paso 7 o bien, utilizar el mtodo que tiene definido el TextArea semejante al
mtodo cut() que ya usamos.
private
void
jmiCopiarActionPerformed(java.awt.event.ActionEvent
evt)
{
//
copiar(evt);
se
puede
usar
el
mtodo
que
definimos
arriba
copiarTexto();
//
creado
por
nosotros
y
usa
el
copy
del
textArea
}
private
void
copiarTexto(){
jtaEditor.copy();
}
Dr.
Hernn
de
la
Garza
Prctica 4 - 10
Paso 12. Dejaremos la barra de mens por un momento para trabajar con la barra
de herramientas, pero regresaremos ya que an hay opciones por activar y
detalles de su manejo que conocer. Continuamos aadiendo tres botones a la
barra de herramientas para las acciones de cortar, copiar y pegar.
A los botones aadidos tenemos las opciones de que muestren un texto o bien
una imagen representativa de lo que hace. Escogemos la primera de ellas y
Prctica 4 - 11
cambiar los textos por el de Cortar, Copiar y Pegar. Adems cambiamos los
nombres de estos tres botones por los siguientes: jbtCortar, jbtCopiar yjbtPegar.
HACER: Asocie la imagen (icon) que es usada en todas las aplicaciones para
identificar estos tres botones. Busque la imagen en internet y asciela en la
propiedad icon.
Programamos cada botn haciendo que llamen al procedimiento correspondiente.
private
void
jbtCortarActionPerformed(java.awt.event.ActionEvent
evt)
{
cortarText();
}
private
void
jbtCopiarActionPerformed(java.awt.event.ActionEvent
evt)
{
copiarTexto();
}
private
void
jbtPegarActionPerformed(java.awt.event.ActionEvent
evt)
{
pegarTexto();
}
Ejecute el programa y verifique que s funcionan las opciones tanto del men
como de la barra de herramientas.
Paso 13. Los elementos en la barra de herramientas por lo general muestran una
imagen o icono que no siempre le dice al usuario claramente cul es su accin as
que se le activan pistas para que cuando el cursor permanezca unos instantes
encima del elemento, se despliegue un mensaje descriptivo. Este mensaje se
conoce como ToolTipText. Cada botn de la barra de herramientas cuenta con la
propiedad ToolTipText, al igual que otros muchos componentes. Localice la
correspondiente a Cortar y escriba el texto Cortar el texto seleccionado. Proceda
de manera semejante con los botones Copiar y Pegar. Al ejecutar el programa
lleve el cursor encima de cualquiera de los tres botones y despus de unos
instantes, aparecer el mensaje escrito en la propiedad mencionada.
Prctica 4 - 12
Paso 14. La barra de herramientas puede recibir otro tipo de elementos tales
como cajas combo, radio buttons, etiquetas, etc. Vamos a aadir una caja combo
y una etiqueta a la barra de herramientas y la activaremos para que nos posibilite
cambiar el tamao de la letra usada en el editor.
Prctica 4 - 13
Prctica 4 - 14
Prctica 4 - 15
Paso 16. Ya se tienen los valores para el tamao de la fuente pero an no los
hemos relacionado con el editor. Para lograr que cambie el tamao de la letra,
debemos modificar la propiedad Font del componente jtaEditor cada vez que se
detecte un cambio de estado en el tem seleccionado en la caja combo. El evento
a controlar entonces es el ItemStateChanged.
Lleve el cursor sobre la caja combo y active el men contextual con botn
derecho. Escoja eventos y luego la categora Item. Seleccione el nico evento que
hay y es el de ItemStateChanged.
La primera lnea de este cdigo obtiene el valor seleccionado en la caja combo por
medio de la propiedad getSelectedItem() y dado que devuelve un tipo Object le
hace un casting a tipo String para luego convertirlo a valor numrico con
Integer.parseInt, y se recibe en la variable size de tipo int.
La segunda lnea crea un nuevo tipo de fuente en el que se usa la variable size
para asignar el tamao de la fuente. Tambin puede cambiarse el tipo de fuente
por otra que no sea Arial y en el segundo argumento se especifica si se quiere
Bold, Italica o Plain. Este argumento es de tipo int as que puede probar poniendo
valores desde el cero, uno, dos, tres y observar el comportamiento de la letra
dentro del jtaEditor.
Ejecute el programa y pruebe a cortar, pegar, a cambiar de tamao, etc. Utilice
tanto la barra de men como la barra de herramientas.
Prctica 4 - 16
Paso 17. Vamos a mostrar como aadir un submen dentro de la opcin Edit, y
aprovecharemos a que cambie el tamao de letra, la cual es una tarea que se
debe poder realizar tambin desde la barra de men, dado que se puso primero
en la barra de herramientas.
Abra la opcin Edit del men de manera que muestre las tres opciones que ya se
tienen. Luego arrastre un separador y colquelo al fondo de las tres opciones.
Enseguida arrastramos un elemento Menu, de la paleta de componentes y lo
colocamos debajo del separador. Si acaso quedan en un orden distinto, es posible
reubicarlos dragndolos hacia la posicin deseada. Otra manera de
reacomodarlos es desde el navegador donde se muestran todos los elementos
que se han definido e incorporado al proyecto, ah tambin por medio del dragado
pueden reacomodarse. Cambiamos el texto del submen por el de Fuente.
Prctica 4 - 17
Se repite lo anterior para cada una de las otras opciones de tamao activadas,
cuidando de modificar el tamao de fuente en la construccin de la variable f.
Paso 18. Veremos enseguida cmo aadir una nueva opcin en el men principal.
Aprovecharemos esta opcin para hacer que se muestre una nueva ventana con
Dr.
Hernn
de
la
Garza
Prctica 4 - 18
informacin del proyecto y adems que sus elementos nos sirvan de pretexto para
aprender a definir y a utilizar los mens contextuales.
Seleccione la barra de mens y luego arrastre un elemento men dentro de ella y
sultelo enseguida de Edit. Cambie el texto por About of. Despus le ponemos
una nica opcin arrastrando hacia l un menuItem. Cambiamos el texto a Acerca
de. En este momento debe verse as:
Paso 19. Haremos que la opcin Acerca de despliegue una nueva ventana. Este
punto se trat en la prctica tres por lo que no se darn los detalles. As que
entonces aada un JDialog al proyecto con el nombre de jdlAcercaDe. A nuestra
nueva ventana le ponemos tres JLabel y un JButton.
Para hacer que se muestre la ventana nueva, primero la declaramos como atributo
en nuestra clase usando el nombre dlVentana. Despus de lo anterior ya estamos
listos para hacer que se visualice. Para ello, programamos el evento
actionPerformed de la opcin Acerca de del men con las instrucciones ya
conocidas.
Se muestra el inicio del cdigo de la clase Editor ya modificado.
public
class
Editor
extends
javax.swing.JFrame
implements
java.awt.datatransfer.ClipboardOwner{
private
java.awt.datatransfer.Clipboard
portapapeles;
private
jdlAcerca
dlVentana;
Prctica 4 - 19
Prctica 4 - 20
La nueva ventana deber verse as despus de haber colocado las tres etiquetas
y el botn y de cambiar el Layout de la ventana a Null Layout:
Prctica 4 - 21
Puede ver que hemos aadido tres MenuItems al Popup Menu. Seleccionamos el
primer jMenuItem1y abrimos su ventana de propiedades, le cambiamos la
propiedad texto por Rojo y damos enter. A los otros dos MunuItems les
cambiamos el texto a uno por Azul y al tercero por Verde.
Paso 23. Ligaremos al botn jbtRegresar con este popup men. Para hacerlo
seleccionamos el botn y abrimos la ventana de propiedades. Buscamos la
propiedad componentPopupMenu y abrimos la caja combo que tiene asociada.
Nos mostrar TODOS los popup men creados hasta ese momento y
seleccionamos el que queremos que se muestre con el botn. Dado que solo
tenemos uno, lo asociamos con l.
Prctica 4 - 22
Paso 24. Vemos que se muestre el men emergente o contextual al hacer clic con
botn derecho sobre el botn Regresar de la ventana.
Paso 25. Al hacer clic sobre alguna de las opciones del men emergente, se debe
realizar una accin y en este caso queremos cambiar el color del fondo del botn.
Aqu mostraremos solamente el cdigo correspondiente a la opcin Rojo, en el
entendido que las dos opciones de color restantes deben realizarse de manera
semejante.
Prctica 4 - 23
Despus de ejecutar el programa, activar la opcin Acerca de del men, dar clic
derecho estando el cursor sobre el botn regresar y de haber escogido la opcin
Rojo del men emergente, se tiene el resultado siguiente en que se muestra
claramente que se modific el color del fondo del botn.
Prctica 4 - 24
Sugerencias Didcticas
La prctica presentada es bastante larga por lo que se sugiere sea encargada a
realizar por los alumnos en horario extra clase.
Se recomienda ver con los alumnos el tema de flujos para que con esas bases
puedan activar las opciones de Save (guardar), el texto que tienen en el editor y
poder asignarle un nombre y una extensin, al igual que la opcin Open que
permitira traer un texto desde un archivo y poder trabajarlo en el editor. Estas
tareas ya no se incluyeron por ser temas que requieren cuidado y prctica lo que
hara que este ejercicio que se presenta, se alargara an ms.
Se recomienda que se le pidan al alumno nuevos ejemplos de uso de los mens,
de la barra de herramientas y de mens contextuales para que refuerce este
conocimiento.
Bibliografa preliminar
1. Java The Complete Reference Eighth Edition
Herbert Schildt
Oracle Press 2011
2. Java 2 Interfaces Grficas y Aplicaciones para Internet
Francisco Javier Ceballos
Alfaomega- RAMA 2. Edicin 2007
3. En la pgina oficial de Java:
docs.oracle.com/javase/tutorial/java/
Prctica 4 - 25