Java Swings
Java Swings
Java Swings
Introduccin
Antes de empezar con la actividad quiero dejarles en claro que a partir de este tema
trabajaremos en NetBeans por ser un IDE ms conveniente para trabajar con formularios,
si conocen otros IDEs tambin los pueden utilizar.
Aqu les dejo el link de descarga del NetBeans para que lo vayan descargando:
https://netbeans.org/downloads/8.0.1/
Instrucciones de descarga:
1. Vaya a https://netbeans.org/downloads/
2. En la parte superior derecha de la pgina, seleccione el idioma y la plataforma en
la lista desplegable. Tambin puede optar por descargar y utilizar el archivo zip
independiente de la plataforma.
3. Haga clic en el botn Descargar en la opcin de descarga que desee instalar.
Pgina 1
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
}
});
}
}
4.2 JFrame.
El componente bsico que requerimos cada vez que implementamos una interfaz visual
con la librara Swing es la clase JFrame, tambin es conocido como contenedor de alto nivel,
pues da origen a una interfaz grfica y por tanto es la raz de ella. Esta clase encapsula una
Pgina 2
Pgina 3
Problema propuesto
1. Crear una ventana de 1024 pxeles por 800 pxeles. Luego no permitir que el operador
modifique el tamao de la ventana. Sabiendo que hacemos visible al JFrame llamando
al mtodo setVisible pasando el valor true, existe otro mtodo llamado setResizable
que tambin requiere como parmetro un valor true o false.
4.3.1 JPanel
Este contenedor es uno de los ms simples, permite la creacin de paneles
independientes donde se almacenan otros componentes, de esta manera decidimos que
elementos se alojan en que paneles y dado el caso podemos usar sus propiedades para
ocultar, mover o delimitar secciones, cuando alojamos elementos en un panel, los cambios
mencionados se aplican a todo su conjunto, es decir, si nuestro panel tiene 5 botones y
ocultamos solo el panel, los botones tambin se ocultan.
Prctica 3: Ejercicio de JPanel
1. Crea un nuevo proyecto en java: Paneles. Y agregue un JFrame al mismo.
Se pretende crear un proyecto con una ventana de diseo complejo. Para ello sigue los
siguientes pasos:
2. En primer lugar, crea un Panel, realiza un clic derecho en JFrame y sigue estos pasos:
Pgina 4
4. Cambia el nombre a este panel y llmalo panelTitulo, ya que contendr el nombre del
programa.
Pgina 5
10. Finalmente ejecuta el programa y comprueba cmo se comportan los elementos segn
el panel donde se encuentre.
4.3.2 JDesktopPane
Este contenedor aloja componentes de tipoJInternalFrame, estos representan ventanas
internas, permitiendo as crear ventanas dentro de una ventana principal, al momento de su
creacin podemos manipular sus propiedades para definir si queremos redimensionarlas,
cerrarlas, ocultarlas entre otras.
Tambin podemos definir una posicin
inicial
de
cada
embargo despus de
ventana
interna,
presentadas
sin
podemos
4.3.3 JScrollPane
Pgina 6
Pgina 7
7. Elimina el texto contenido en la etiqueta etiImagen. Solo tienes que borrar el contenido
de la propiedad text.
8. Luego introduciremos una imagen dentro de la etiqueta, a travs de la propiedad icon.
La imagen la introduciremos desde fichero, y elegiremos la siguiente imagen de tu
disco duro:
Imgenes / Imgenes de Muestra / Nenfares.jpg (sino encuentras esta imagen,
puedes colocar otra de tamao grande)
9. Esta imagen es tan grande que no se podr ver entera dentro del panel de
desplazamiento. Ejecuta el programa y observars el uso de las barras de
desplazamiento dentro del panel.
Pgina 8
6. Los JPanel son objetos contenedores. Es decir, pueden contener otros objetos como
por ejemplo botones, etiquetas, cuadros de texto, etc.
Adems, los JPanel pueden ser diseados independientemente de la ventana. Haz
doble clic sobre el panelDatos en el Inspector y observa lo que ocurre:
7. En la pantalla aparecer nicamente el JPanel, para que puede ser diseado aparte de
la ventana completa:
Pgina 9
Agranda el panel.
El panel debera quedar as. Toma como referencia esta imagen:
9. Haz doble clic sobre el JFrame (en el Inspector) para poder ver globalmente la ventana.
En la pantalla debera aparecer esto:
Pgina 10
4.3.4 JTabbedPane
Este tal vez sea otro de los componentes
ms usados, permite la creacin de unas pestaas
en nuestra ventana, cada pestaa representa un
contenedor independiente donde podemos alojar
paneles u otros elementos.
4.3.5 JSplitPane
Este componente permite la creacin
de un contenedor dividido en 2 secciones,
muchas veces usado en aplicaciones donde
una
seccin
presenta
una
lista
de
5.1 JLabel
La clase Label(etiqueta) se utiliza para mostrar Strings en un componente.
Tiene 3 constructoras:
Label(): La constructora por defecto, crea una etiqueta con un String vaco.
Aparte de los mtodos heredados de Object y Component, esta clase tiene dos mtodos
importantes:
Pgina 11
4. Una vez aadido el panel en el JFrame, le pondremos un borde para poder localizarlo
fcilmente. Debes hacer lo siguiente:
a. Selecciona el panel que has aadido.
b. Activa la propiedad Border (botn con tres puntos)
c. Busca el tipo de borde llamado TitledBorder (borde con ttulo) y pon el ttulo
colores.
Pgina 12
10. Si ejecuta el programa, observar que pueden seleccionarse varios colores a la vez.
Esto no es interesante, ya que los botones de opcin se usan para activar solo una
opcin entre varias.
11. Hay que hacer que solo un botn de opcin pueda estar seleccionado a la vez. Para
ello, debe aadir un nuevo objeto. Realice los siguientes pasos:
a. Aada un objeto del tipo ButtonGroup al formulario. Atencin! Este objeto es
invisible, y no se ver en el formulario, sin embargo, lo podris ver en el
Inspector, en la parte de Otros Componentes:
Pgina 13
Pgina 14
rea del
Constructor
14. El programa no est terminado an. Interesa que cuando el usuario pulse el botn
Aceptar, en la etiqueta aparezca el color elegido. Para ello, en el actionPerformed del
botn Aceptar programe lo siguiente:
String mensaje="Color elegido: ";
if (optRojo.isSelected()) {
mensaje=mensaje+"Rojo";
} else if (optVerde.isSelected()) {
mensaje=mensaje+"Verde";
} else if (optAzul.isSelected()) {
mensaje=mensaje+"Azul";
}
etiResultado.setText(mensaje);
15. Observa el cdigo. En l se hace lo siguiente:
a. Se crea una variable de cadena llamada mensaje.
b. En esa variable se introduce el texto Color elegido:
c. Luego se comprueba que opcin est seleccionada, usando el mtodo
isSelected de los botones de opcin. Este mtodo te dice si un botn est
seleccionado o no.
d. Segn la opcin que est seleccionada, se aade un texto u otro a la cadena
mensaje.
e. Finalmente se muestra la cadena mensaje en la etiqueta etiResultado.
16. Ejecute el programa. Seleccione por
ejemplo la Verde. Al pulsar Aceptar el
resultado debe ser el siguiente:
5.3 JCheckBox.
Casillas de activacin: La clase CheckBox se utiliza para presentar opciones en un
componente.
Se agrupan de manera que varios puedan estar pulsados.
Marcadores
Pgina 15
7. Aade tres JCheckBox y cambia el texto de ellos, de forma que aparezca Perro,
Gato y Ratn.
8. Debe cambiar el nombre de cada uno de
ellos. Se llamarn: chkPerro, chkGato,
chkRaton.
9. La ventana tendr el siguiente aspecto
cuando termine:
10. El programa debe funcionar de la siguiente
forma:
Cuando el usuario pulse aceptar, en la etiqueta aparecer un mensaje indicando qu
animales han sido seleccionados. Para ello hay que programar el evento
actionPerformed del botn Aceptar (Ir a la pestaa Eventos, luego desplegar las
opciones del evento actionPerfomed y elegir btnActionPerfomed). En ese evento aada
el siguiente cdigo:
Pgina 16
11.
12.
13.
14.
5.4 JComboBox.
Lista desplegable: Permite la seleccin de un item de entre varios.
No est desplegado como Jlist
Constructores
JComboBox() JComboBox(Object [])
JComboBox(Vector) JComboBox(ListModel)
Mtodos de instancia
int getSelectedIndex()
Object getSelectedItem()
void setSelectedIndex(int)
boolean isEditable()
void setEditable(boolean)
Pgina 17
5. Los elementos del cboColores pueden ser cambiados a travs de la propiedad Model.
Selecciona el combo y activa la propiedad Model (el botoncito con los tres puntos)
Aparecer lo siguiente:
6. Al igual que pasaba con los cuadros de lista, se pueden eliminar los elementos que
contiene el combo y aadir elementos propios. Use los botones Aadir y Eliminar para
aadir la siguiente lista de elementos:
Rojo, Verde, Azul.
7. Ejecuta el programa y observa el
funcionamiento del desplegable...
Pgina 18
11. Los cuadros combinados pueden funcionar tambin como cuadros de texto. Es decir,
pueden permitir que se escriba texto dentro de ellos. Para hacer esto, basta con
cambiar su propiedad editable y activarla.
12. Ejecuta el programa y observa cmo se puede escribir dentro del combo. Al pulsar
Enter, el programa funciona igualmente con el texto escrito.
Se escribe aqu y
se pulsa enter
5.5 JButton.
Este componente es bsico; sobre el suelen recaer las acciones del usuario y a
menudo en sus escuchas asociadas se realiza la parte ms complicada del programa. La
Pgina 19
5.6 JTextFiel
Este componente se utiliza comnmente para leer datos de teclado.
Constructoras para TextField:
Mtodos
La clase TextField coincide con las clases anteriores en la definicin de los
mtodos setText(String cadena) y String getText(). Algunos otros mtodos de inters:
texto.setSelectionStart(2);
texto.setSelectionEnd(5);
Eventos
En cuanto a los eventos, la diferencia principal con la clase Button es que el
mtodo ActionEvent de la clase escucha se utiliza cuando se pulsa Enter. Tambin se puede
controlar cual es la tecla pulsada, como veremos al hablar de los eventos de teclado, pero
estos eventos no son especficos de la clase TextField sino comunes a todos los Component.
5.7 JTextArea.
Profesora: Zulma Anglica Argello Matas
Pgina 20
TextArea(String texto, int filas, int columnas): Texto inicial con filas y columnas
prefijadas.
TextArea(String texto, int filas, int columnas, int barras): Aade al anterior la
posibilidad de controlar la existencia de barras de desplazamiento. Los
posibles valores de barras son:
o
SCROLLBARS_BOTH
SCROLLBARS_HORIZONTAL_ONLY
SCROLLBARS_NONE
SCROLLBARS_VERTICAL_ONLY
Mtodos y Eventos
Los mtodos y eventos son como los de TextField con algunos mtodos aadidos, entre los
que podemos destacar:
void replaceRange(String str, int start, int end) : Cambia el texto entre las
posiciones start y end por el texto str.
5.8 JPasswordField.
Se comparta como un TextField (campo de texto), con la diferencia que en este control
no se muestran los datos ingresados. Se pueden dejar programado eventos que avise al
usuario que las teclas maysculas estn activas, que delimite la cantidad de caracteres a
ingresar, etc.
5.9 JSlider.
La clase JSlider (Deslizador) permite crear objetos como el siguiente:
Estos elementos tienen un pequeo recuadro que se puede arrastrar a derecha o izquierda.
Segn la posicin del recuadro, el JSlider tendr un valor concreto.
El JSlider se puede configurar para que muestre los distintos valores que puede tomar:
Pgina 21
El valor que tiene un JSlider es el valor al que apunta el recuadro del JSlider. En la imagen
anterior, el JSlider tiene un valor de 85.
5. Un JSlider tiene un valor mnimo y un valor mximo. El valor mnimo es el valor que
tiene cuando el recuadro est pegado a la parte izquierda, mientras que el valor
mximo es el valor que tiene cuando el recuadro est pegado a la parte derecha.
El valor mnimo y mximo del JSlider se puede cambiar. Busca las propiedades
maximum y minimum del JSlider y asigna los siguientes valores:
Mximo: 500, Mnimo: 100
6. Se puede asignar un valor inicial al JSlider a travs de su propiedad value. Busque esta
propiedad y asigne un valor de 400. Observe donde se sita el recuadro del JSlider.
8. Esto, en realidad, no produce ningn cambio en el JSlider. Para que las divisiones se
vean, es necesario que active tambin la propiedad paintTicks. Esta propiedad pintar
divisiones en el JSlider:
Pgina 22
Medidas cada 50
unidades
10. Ejecuta el programa para ver el funcionamiento del Deslizador y su aspecto. Debe ser
parecido al siguiente:
11. Bien. Ahora se pretende que cuando el usuario arrastre el deslizador, en la etiqueta
aparezca el valor correspondiente. Para ello tendr que programar el evento
stateChanged del JSlider.
El evento stateChanged sucede cuando el usuario arrastra el recuadro del deslizador.
En este evento programe lo siguiente:
etiValor.setText("El valor es: "+slDeslizador.getValue());
12. Ejecute el programa y observe lo que sucede cuando arrastra el deslizador.
13. La explicacin del cdigo es la siguiente:
a. El mtodo getValue del deslizador nos devuelve el valor que tiene actualmente
el deslizador.
b. Este valor es concatenado a la cadena El valor es: y es mostrado en la
etiqueta a travs del conocido setText.
Movemos aqu.
Y aparece el valor
correspondiente aqu.
14. A continuacin se mencionan otras propiedades interesantes de los JSlider que puedes
probar por tu cuenta:
orientation
Permite cambiar la orientacin del JSlider. Podras por ejemplo hacer que el JSlider
estuviera en vertical.
minorTickSpacing
Pgina 23
5.10 JTable.
Es un componente utilizado para mostrar y editar las habituales tablas bidimensionales
con celdas.
5.11 JList.
Muestra una lista de elementos para su seleccin.
Constructores
JList() JList(Object [])
JList(Vector) JList(ListModel)
Mtodos de instancia
int getSelectedIndex() // -1 si no hay
int [] getSelectedIndices()
Object getSelectedValue()
Object [] getSelectedValues()
boolean isSelectedIndex(int)
boolean isSelectionEmpty([])
void setListData(Object)
void setListData(Vector)
void setSelectionMode(int)
get selectionMode()
...
Constantes
ListSelectionModel.SINGLE_SELECTION
ListSelectionModel.SINGLE_INTERVAL_SELECTION
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
Pgina 24
4. Cmbiale el nombre al JList. Ten cuidado, ya que en los JList aparecen siempre dentro
de otro objeto llamado jScrollPane. Si miras en el Inspector, vers que al pulsar en el
botn + del jScrollPane aparecer tu JList:
Pgina 25
Pgina 26
Observa el cdigo:
a. El mtodo getSelectedIndex me dice el ndice del elemento que est
seleccionado.
b. Por ejemplo, si est seleccionado el primero el ndice es 0, si est
seleccionado el segundo el ndice es 1, etc.
c. Si este mtodo devuelve -1, entonces es seal de que no hay ningn elemento
seleccionado.
d. Aprovecho esto para mostrar un mensaje indicando lo sucedido.
Si ejecuta el programa y pulsa el botn
Aceptar sin seleccionar nada el resultado
debera ser el siguiente:
6. Mens Swing
Las barras de mens son un conjunto de objetos de distinto tipo que se contienen unos
a los otros:
- La barra en s est representada por un objeto del tipo JMenuBar.
- La barra contiene opciones principales, representadas por objetos JMenu.
- Las opciones principales contienen opciones que aparecen al desplegarse el men. Esta
opciones son objetos del tipo JMenuItem.
- Un JMenu tambin puede contener otros JMenu, que a su vez contendrn JMenuItems.
- Tambin puede aadir separadores (JSeparator) que permiten visualizar mejor las opciones
dentro de un men.
Pgina 27
7. Ahora, la nica opcin de la barra de mens muestra el texto Menu. Esto se puede
cambiar seleccionndola y cambiando su propiedad text. Asgnale el texto Archivo a
la opcin del men:
Pgina 28
10. Aada dos opciones ms a la barra de mens. El inspector debe tener ahora el
siguiente aspecto:
Los JMenuItem son objetos que representan las opciones contenidas en los mens
desplegables de la barra de mens.
16. Aade un JMenuItem ms al menuArchivo y luego cambia el nombre a ambos. Sus
nombres sern menuItemAbrir y menuItemGuardar. El aspecto del Inspector ser el
siguiente:
Pgina 29
17. Usa ahora la propiedad Text de ambos JMenuItem para asignarles un texto. El primero
tendr el texto Abrir y el segundo el texto Guardar.
18. Ya podemos ejecutar el programa para ver que es lo que se ha conseguido. Use el
men:
Los JSeparator son objetos que definen una separacin entre las opciones de un men.
Cmbiele el nombre y llmelo separador1:
20. Aada un nuevo JMenuItem al men Archivo y ponle el nombre menuSalir. El texto de
esta opcin ser Salir (use su propiedad text) El aspecto del Inspector ser el
siguiente:
Pgina 30
24. Ahora aade dentro del menuColores tres JMenuItem llamados respectivamente:
menuItemRojo, menuItemVerde, menuItemAzul. Sus textos sern Rojo, Verde y
Azul.
Pgina 31
6.2 JCheckBoxMenuItem
Clase JCheckBoxMenuItem
Todas las interfaces implementadas:
ImageObserver , ItemSelectable , MenuContainer , Serializable , accesible , MenuElem
ent , SwingConstants
public class JCheckBoxMenuItem
extiende JMenuItem
implementa SwingConstants , Accesible
Un elemento de men que puede activarse o desactivarse. Si se selecciona, el elemento de
men tpicamente aparece con una marca de verificacin junto a l. Si no est seleccionado
o seleccionada, la opcin de men aparece sin una marca de verificacin. Como un
elemento del men regular, una casilla de verificacin opcin de men puede tener ya sea
texto o un icono grfico asociado a l, o ambos.
De cualquier isSelected / setSelected o getState / setState se puede utilizar para determinar
/ especificar el estado de seleccin de la opcin de men. Los mtodos preferidos
son isSelected y setSelected ,
que
funciona
para
todos
los
mens
y
botones. Los getState y setState existen mtodos para la compatibilidad con otros conjuntos
de componentes.
Los elementos de men se pueden
configurar, y en cierta medida
controlados, por Action s. El uso de
una Action con un elemento de men
tiene muchos beneficios ms all de la
configuracin
directamente
un
elemento
de
men. Consulte
la oscilacin
componentes
de
apoyo Action para ms detalles.
6.3 JRadioButtonMenuItem.
Clase JRadioButtonMenuItem
Todas las interfaces implementadas:
ImageObserver , ItemSelectable , MenuContainer , Serializable , accesible , MenuElem
ent , SwingConstants
public class JRadioButtonMenuItem
extiende JMenuItem
implementa Accesible
Una implementacin de un elemento
de
men
de
botones
de
radio. Un JRadioButtonMenuItem es
un
elemento de men que es parte de un
grupo de elementos de men en el que
slo un elemento del grupo puede ser
Pgina 32
(La ventana de guardar es la misma, solo que muestra en su barra de ttulo la palabra Guardar)
El objeto JFileChooser nos facilita la labor de elegir el fichero, pero no realiza la
apertura o la accin de guardar la informacin en l. Esto tendr que ser programado.
Pgina 33
9. Una vez hecho esto, ya podemos programar la opcin Abrir del men. Activa el evento
actionPerformed de la opcin Abrir y programa dentro de l lo siguiente:
Pgina 34
10. Ejecuta el cdigo y prueba la opcin Abrir del men. Prueba a elegir algn fichero y
abrirlo. Prueba a cancelar la ventana de apertura. Etc
11. Analicemos el cdigo anterior:
int resp;
resp=elegirFichero.showOpenDialog(this);
-
Estas dos lneas crean una variable entera resp (respuesta) y a continuacin hacen
que se muestre la ventana Abrir Fichero. Observa que para conseguirlo hay que usar
el mtodo showOpenDialog del objeto elegirFichero. Este mtodo lleva como
parmetro la ventana actual (this)
- El mtodo showOpenDialog no solo muestra la ventana Abrir Fichero sino que
tambin devuelve un valor entero segn el botn pulsado por el usuario en esta
ventana. Esto es: botn Abrir o botn Calcelar.
- Se pueden usar dos if para controlar lo que sucede si el usuario puls el botn Abrir o
el botn Calcelar de la ventana Abrir Fichero:
if (resp==JFileChooser.APPROVE_OPTION) {
JOptionPane.showMessageDialog(null,elegirFichero.getSelectedFile().toString());
} else if (resp==JFileChooser.CANCEL_OPTION) {
JOptionPane.showMessageDialog(null,"Se puls la opcin Cancelar");
}
-
Pgina 35
7.2 JColorChooser
La clase JColorChooser nos presenta una ventana de herramientas para la seleccin
de colores: la ventana es en realidad un JDialog que le brinda al usuario la posibilidad de
interactuar con las paletas de colores proporcionadas.
7.3 JToolBar
Barras de herramientas
Una barra de herramientas es bsicamente un contenedor de botones y otros
elementos propios de la ventana.
A travs de estos botones se pueden activar de forma rpida las opciones del
programa, las cuales suelen estar tambin incluidas dentro de la barra de mens.
Prctica 12: Ejercicio de JToolBar
1. Veamos como aadir una barra de herramientas a nuestras aplicaciones. En primer
lugar, crea un proyecto con el NetBeans.
2. Aade a tu ventana un objeto JmenuBar (una barra de mens)
3. En la parte superior de tu ventana aparecer esto:
Pgina 36
8. Cambia el texto de los botones. Estos contendrn el texto: Uno, Dos, Tres
y Cuatro.
9. Ejecuta el programa y observa el resultado.
Pgina 37
15. Una vez colocadas las imgenes a los botones, se puede quitar el texto de
estos. Un ejemplo de cmo podra quedar la barra de herramientas es este:
Pgina 38