Swing y NetBeans

49
Swing Magíster Víctor Andrade Soto

Transcript of Swing y NetBeans

Page 1: Swing y NetBeans

Swing

Magíster Víctor Andrade Soto

Page 2: Swing y NetBeans

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

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

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

Haga un click derecho sobre el formulario y elija: Events-Window-WindowOpened

Page 6: Swing y NetBeans

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

Entre las llaves escribimos el código:

String s=” Se mostrará formulario”;

JOptionPane.showMessageDialog(null,s);

Page 8: Swing y NetBeans

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

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

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

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

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
Page 14: Swing y NetBeans

Declaración e inicialización del arreglo:

Botón Generar:

Page 15: Swing y NetBeans

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

Al hacer click en el botón mostrar:

Page 17: Swing y NetBeans

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

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

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

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

El programa mostrará 2 RadioButton que serán parte de un buttonGroup

Page 22: Swing y NetBeans

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

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

JComboBox

Page 25: Swing y NetBeans

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

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

Añada el siguiente código para los eventos que se indiquen:

Page 28: Swing y NetBeans

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

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

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

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

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

JTable

Vamos a crear una tabla que muestre el nombre, precio y cantidad de productos para 2 productos.

Page 34: Swing y NetBeans

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

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
Page 37: Swing y NetBeans

JInternalFrame

Vamos a hacer una aplicación que alterne entre dos jInternalFrame. Debe verse así en el diseño:

Page 38: Swing y NetBeans

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

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

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

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

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

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

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

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

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

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

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

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); }