swing y netbeans
TRANSCRIPT
![Page 1: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/1.jpg)
Swing
Magíster Víctor Andrade Soto
![Page 2: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/2.jpg)
Manejo de Eventos
Vamos a partir del supuesto que Ud. sabe:– Hacer aplicaciones visuales básicas con
NetBeans– Suprimir los layout– Las propiedades y métodos principales de los
siguientes componentes: Label, TextField, Button.
Creemos el Frame de la siguiente diapositiva
![Page 3: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/3.jpg)
Cuando se ejecute: – se verá un mensaje que diga “Se mostrará
formulario”,– Escribir sobre el cuadro de texto,– Cuando haga clic muestre un mensaje de
saludo – Cuando cerremos la ventana termine la
aplicación y muestre antes un mensaje de despedida..
![Page 4: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/4.jpg)
Primero debemos añadir un “import” que referencie objetos swing para poder usar nuestros “mensajes”:
import javax.swing.*;Debe verse así:
![Page 5: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/5.jpg)
Haga un click derecho sobre el formulario y elija: Events-Window-WindowOpened
![Page 6: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/6.jpg)
Se muestra el área de código que corresponde al evento que “se dispara” cuando le ventana (window/formulario) se abre (opened).
![Page 7: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/7.jpg)
Entre las llaves escribimos el código:
String s=” Se mostrará formulario”;
JOptionPane.showMessageDialog(null,s);
![Page 8: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/8.jpg)
Si ejecutamos la aplicación ocurrirá un evento windowopened y como hemos escrito código para dicho evento entonces encima del frame o formulario se mostrará el mensaje.
![Page 9: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/9.jpg)
Detengamos la aplicación cerrando ambas ventanas y hagamos clic en la ficha Design. Hagamos un clic derecho sobre el botón y elegimos Events-Mouse-MouseClicked.
Escribamos el siguiente código:String nombre= jTextField1.getText();
JOptionPane.showMessageDialog(null,"Hola " +nombre
![Page 10: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/10.jpg)
Por último vuelva al diseño y haga clic derecho sobre el área del frame y seleccione Events-window-windowClosing escriba:String nombre=jTextField1.getText();
JOptionPane.showMessageDialog(null,"Chao " +nombre);
![Page 11: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/11.jpg)
TextArea
Crearemos una aplicación visual con un Frame Form (el nombre del proyecto y del form puede ser el que guste) que tenga un TextArea (Cuadro de texto de varias líneas) y dos botones para que se vea así:
![Page 12: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/12.jpg)
La aplicación permitirá crear un mostrar un arreglo de 10 números con valores del 1 al 20 al hacer clic en el botón Generar. Al hacer clic en mostrar aparecerá un cuadro de dialogo preguntado por el número que deseamos ver. En el ejemplo el 6 es el número 1, el 10 es el tercer número, etc.Respecto al diseño debemos indicar que hay que incluir un jOptionPane para los cuadros de ingreso de datos y de mensajes.El JTextArea incluye un objeto que lo circunda conocido como JScrollPane que permite “enrollar” el contenido del JTextArea. En el ejemplo nos referimos a las barras de desplazamiento que permitirán ver del sexto número hacia adelante que no se aprecian a la vista.
![Page 13: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/13.jpg)
![Page 14: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/14.jpg)
Declaración e inicialización del arreglo:
Botón Generar:
![Page 15: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/15.jpg)
Botón Mostrar
Al ejecutar y hacer clic en el botón Generar aparecerán 10 números aleatorios del 1 al 20 como se ve en la siguiente figura
![Page 16: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/16.jpg)
Al hacer click en el botón mostrar:
![Page 17: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/17.jpg)
Casillas de Verificación
Vamos a hacer un programa que permita cambiar el estilo de la fuente en un TextField. Un checkbox permitirá alternar entre negrita y normal y otro checkbox entre cursiva y normal.
![Page 18: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/18.jpg)
Primero agregar antes de la declaración de la clase:
import java.awt.*;
Luego de dicha declaración:
boolean valor1=false;
boolean valor2=false;
(Nota: este programa no permite trabajar conjuntamente a ambos botones. Haciendo uso de operadores lógicos haga que ambos botones trabajen juntos)
![Page 19: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/19.jpg)
En el actionPerformed de cada checkbox::private void
jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: if(valor2==false) { valor2=true; jTextField1.setFont(new
Font("Arial",Font.ITALIC,14)); } else { valor2=false; jTextField1.setFont(new
Font("Arial",Font.PLAIN,14)); } }
![Page 20: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/20.jpg)
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: if(valor1==false) { valor1=true; jTextField1.setFont(new
Font("Arial",Font.BOLD,14)); } else { valor1=false; jTextField1.setFont(new
Font("Arial",Font.PLAIN,14)); } }
![Page 21: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/21.jpg)
El programa mostrará 2 RadioButton que serán parte de un buttonGroup
![Page 22: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/22.jpg)
Primero arrastre el buttonGroup luego el resto de componentes (el buttonGroup no aparece en el diseño pero si en el inspector).Defina las propiedades text de los botones de opción. Luego defina como buttonGroup1 la propiedad buttonGroup de cada RadioButton (Esto es para que al elegir uno de ellos el otro no se vea seleccionado).Escriba el siguiento código en el actionPerformed de cada RadioButton
![Page 23: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/23.jpg)
private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(jRadioButton2.isSelected()) jTextField1.setText("Vamos a perder"); } private void
jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if(jRadioButton1.isSelected()) jTextField1.setText("Vamos a ganar"); }
![Page 24: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/24.jpg)
JComboBox
![Page 25: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/25.jpg)
Para llenar el jComboBox luego de arrastarlo y diseñarlo busque la propiedad model haga un clic y aparece la siguiente ventana:
![Page 26: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/26.jpg)
Seleccione el jComboBox.
Clic en model
Elimine con Remove los elementos que aparecen
Escriba los nuevos ítems.
Presione Add para añadirlos a la lista.
Para manipular el formato numérico y obtener 2 decimales en la división usaremos la clase NumberFormat del paquete java.text. Añada la siguiente línea en el encabezado de la aplicación:
import java.text.*;
![Page 27: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/27.jpg)
Añada el siguiente código para los eventos que se indiquen:
![Page 28: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/28.jpg)
Evento actionPerformed del botón Calcularprivate void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int ope; NumberFormat nf=NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); double n1,n2, result; result=0.0; n1=Double.valueOf(jTextField1.getText()).doubleValue(); n2=Double.valueOf(jTextField2.getText()).doubleValue(); ope=jComboBox1.getSelectedIndex(); if(ope==0) result=n1+n2; if(ope==1) result=n1-n2; if(ope==2) result=n1*n2; if(ope==3) result=n1/n2; jTextField3.setText(nf.format(result)); }
![Page 29: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/29.jpg)
Evento actionPerformed del botón Limpiarprivate void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField1.requestFocus(); }
Evento actionPerformed del botón Salir private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)
{ System.exit(0); }
![Page 30: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/30.jpg)
JList
Vamos a hacer un ejemplo que permita colocar una lista de 5 nombres y al hacer clic en uno de ellos aparezca en un cuadro de texto.
![Page 31: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/31.jpg)
Arrastre un jList (el jList tiene un jScrollPane como el TextArea). Para llenar el List ir a la propiedad model eliminar los elementos por defecto y añadir elementos como se muestra:
![Page 32: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/32.jpg)
Aceptar, click derecho en el jList, events - listSelection - valueChanged y escribir el código siguiente:
private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {
String nombre=(String)jList1.getSelectedValue();
jTextField1.setText(nombre);
}
![Page 33: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/33.jpg)
JTable
Vamos a crear una tabla que muestre el nombre, precio y cantidad de productos para 2 productos.
![Page 34: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/34.jpg)
El jTable trae por defecto 4 columnas pero podemos modificar el número de las mismas.Añada antes de la declaración de la clase:
import javax.swing.SwingUtilities;import javax.swing.table.DefaultTableModel;
Luego de la declaración de la clase:
String titulos[]=new String[4];String datos[][]=new String[2][4];
![Page 35: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/35.jpg)
Ahora en el evento windowOpened titulos[0]="Código"; titulos[1]="Nombre"; titulos[2]="Precio"; titulos[3]="Stock"; datos[0][0]="A001"; datos[0][1]="Azucar"; datos[0][2]="2.40"; datos[0][3]="212"; datos[1][0]="A002"; datos[1][1]="Arroz"; datos[1][2]="2.83"; datos[1][3]="250"; jTable1.setModel(new DefaultTableModel(datos, titulos));
![Page 36: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/36.jpg)
![Page 37: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/37.jpg)
JInternalFrame
Vamos a hacer una aplicación que alterne entre dos jInternalFrame. Debe verse así en el diseño:
![Page 38: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/38.jpg)
Selecciona el jInternalFrame en el cuadro de controles y coloca 2 de ellos minimizados en el frame. Note que tambien hemos colocado 2 botones.Seleccione el primer jInternalFrame y en la ventana de propiedades modifique la propiedad title por Soy el marco 1. Haga lo mismo con el jInternalFrame2 (Soy el marco 2)Coloque el siguiente código en el windowOpened del frame para que no se vean los jInternalFrame (no escriba :private void….. eso ya está ahí)private void formWindowOpened(java.awt.event.WindowEvent evt) { jInternalFrame1.setVisible(false); jInternalFrame2.setVisible(false); }
![Page 39: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/39.jpg)
Escriba el siguiente código para el evento actionPerformed (detecta el evento “más” común en los componentes swing: clic en los botones, pulsar enter en un cuadro de texto, etc de los botones)
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { jInternalFrame1.setVisible(true); jInternalFrame2.setVisible(false); jInternalFrame1.setBounds(50,20,210,160); }
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jInternalFrame2.setVisible(true); jInternalFrame1.setVisible(false); jInternalFrame2.setBounds(50,20,210,160); }
![Page 40: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/40.jpg)
Cree un aplicación visual sin clase principal. Vamos a mostrar y ocultar 2 jInternalFrame en función de la selección de opciones del menú. Coloque 2 jInternalFrame como en el ejemplo anterior (no olvide colocar el title para cada uno). Se verá así:
JMenuBar, Jmenu, JmenuItem
![Page 41: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/41.jpg)
Vaya a la ventana de cuadro de controles y seleccione un jMenuBar. Arrástrelo al frame. Se verá como sigue:
![Page 42: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/42.jpg)
Se añade una barra de menú con el menú Menu1. Una barra de menú puede tener varios menu y un menú varios menuItems. Cambiemos el texto del menú. Haga doble clic en el área de diseño sobre la expresión Menu Escriba Elegir. Ahora en la ventana del inspector haga clic derecho sobre la expresión jMenu1 y elija add – jMenuItem
![Page 43: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/43.jpg)
Ahora se ve un nuevo elemento
Seleccione el jMenuItem1, vaya a la ventana de propiedades y seleccione text y anote ir al 1. Añada un jMenuItem más al jMenu1 y como text que diga ir al 2. Añada un jSeparator y luego otro jMenuItem para jMenu1 que diga Salir. Se verá así en el inspector.
![Page 44: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/44.jpg)
Note que todos son elementos de jMenu1 (un error común es añadir los nuevos elementos sobre el inmediato anterior es decir jMenuItem2 dentro de jMenuItem1).
Para añadir código a cada item del menú por ejemplo haga clic derecho sobre jMenuItem1 seleccione Events-action-actionPerformed y luego escribe el código correspondiente.
Escriba el siguiente código:
![Page 45: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/45.jpg)
Evento actionPerformed del jMenuItem1 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent
evt) { jInternalFrame1.setVisible(true); jInternalFrame2.setVisible(false); jInternalFrame1.setBounds(70,50,200,120); } Evento actionPerformed del jMenuItem2 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent
evt) { jInternalFrame2.setVisible(true); jInternalFrame1.setVisible(false); jInternalFrame2.setBounds(70,50,200,120); }Evento actionPerformed del jMenuItem3 private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent
evt) { System.exit(0); }
![Page 46: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/46.jpg)
JDialog
En nuestro ejemplo el proyecto se llama Ejercicio3 y el formulario o frame se llama Form2. A estas alturas Ud. puede nombrarlos como guste.En la ventana de controles ubique un jDialog y arrastrelo por debajo de su diseño, más o menos en la posición de la flecha.
![Page 47: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/47.jpg)
Abajo a la izquierda en la ventana denominada inspector aparece la referencia Other Components y por debajo se ven el jDialog1 y el jOptionPane1.
![Page 48: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/48.jpg)
A estas alturas Ud. ya declaro null el layout y cambio el resize policy. Haga doble clic en la referencia al jDialog y añada un botón al mismo. No modifique el tamaño que eso lo haremos por código.
![Page 49: Swing y NetBeans](https://reader033.vdocuments.mx/reader033/viewer/2022061512/557202c54979599169a40e7b/html5/thumbnails/49.jpg)
actionPerformed del botón Mostrar en el Frame principalprivate void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: jDialog1.setBounds(320,280,250,100); jDialog1.setVisible(true); setVisible(false); } actionPerformed del botón Saludar en el jDialog private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here: jOptionPane1.showMessageDialog(this,"Hola a
Todos"); setVisible(true); jDialog1.setVisible(false); }