You are on page 1of 49

Swing

Magster Vctor Andrade Soto

Manejo de Eventos
Vamos a partir del supuesto que Ud. sabe:
Hacer aplicaciones visuales bsicas con NetBeans Suprimir los layout Las propiedades y mtodos principales de los siguientes componentes: Label, TextField, Button.

Creemos el Frame de la siguiente diapositiva

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 aplicacin y muestre antes un mensaje de despedida..

Primero debemos aadir un import que referencie objetos swing para poder usar nuestros mensajes: import javax.swing.*; Debe verse as:

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

Se muestra el rea de cdigo que corresponde al evento que se dispara cuando le ventana (window/formulario) se abre (opened).

Entre las llaves escribimos el cdigo: String s= Se mostrar formulario; JOptionPane.showMessageDialog(null,s);

Si ejecutamos la aplicacin ocurrir un evento windowopened y como hemos escrito cdigo para dicho evento entonces encima del frame o formulario se mostrar el mensaje.

Detengamos la aplicacin cerrando ambas ventanas y hagamos clic en la ficha Design. Hagamos un clic derecho sobre el botn y elegimos Events-MouseMouseClicked. Escribamos el siguiente cdigo:
String nombre= jTextField1.getText(); JOptionPane.showMessageDialog(null,"Hola " +nombre

Por ltimo vuelva al diseo y haga clic derecho sobre el rea del frame y seleccione Eventswindow-windowClosing escriba:
String nombre=jTextField1.getText(); JOptionPane.showMessageDialog(null,"Chao " +nombre);

TextArea
Crearemos una aplicacin 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 lneas) y dos botones para que se vea as:

La aplicacin permitir crear un mostrar un arreglo de 10 nmeros con valores del 1 al 20 al hacer clic en el botn Generar. Al hacer clic en mostrar aparecer un cuadro de dialogo preguntado por el nmero que deseamos ver. En el ejemplo el 6 es el nmero 1, el 10 es el tercer nmero, etc. Respecto al diseo 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 permitirn ver del sexto nmero hacia adelante que no se aprecian a la vista.

Declaracin e inicializacin del arreglo:

Botn Generar:

Botn Mostrar

Al ejecutar y hacer clic en el botn Generar aparecern 10 nmeros aleatorios del 1 al 20 como se ve en la siguiente figura

Al hacer click en el botn mostrar:

Casillas de Verificacin
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.

Primero agregar antes de la declaracin de la clase: import java.awt.*; Luego de dicha declaracin: boolean valor1=false; boolean valor2=false;

(Nota: este programa no permite trabajar conjuntamente a ambos botones. Haciendo uso de operadores lgicos haga que ambos botones trabajen juntos)

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

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

El programa mostrar 2 RadioButton que sern parte de un buttonGroup

Primero arrastre el buttonGroup luego el resto de componentes (el buttonGroup no aparece en el diseo pero si en el inspector). Defina las propiedades text de los botones de opcin. 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 cdigo en el actionPerformed de cada RadioButton

private void jRadioButton2ActionPerformed(java.awt.event.A ctionEvent evt) { if(jRadioButton2.isSelected()) jTextField1.setText("Vamos a perder"); } private void jRadioButton1ActionPerformed(java.awt.event.A ctionEvent evt) { if(jRadioButton1.isSelected()) jTextField1.setText("Vamos a ganar"); }

JComboBox

Para llenar el jComboBox luego de arrastarlo y disearlo busque la propiedad model haga un clic y aparece la siguiente ventana:

Seleccione el jComboBox. Clic en model Elimine con Remove los elementos que aparecen Escriba los nuevos tems. Presione Add para aadirlos a la lista. Para manipular el formato numrico y obtener 2 decimales en la divisin usaremos la clase NumberFormat del paquete java.text. Aada la siguiente lnea en el encabezado de la aplicacin:

import java.text.*;

Aada el siguiente cdigo para los eventos que se indiquen:

Evento actionPerformed del botn Calcular private 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)); }

Evento actionPerformed del botn Limpiar private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField1.requestFocus(); } Evento actionPerformed del botn Salir private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); }

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.

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 aadir elementos como se muestra:

Aceptar, click derecho en el jList, events listSelection - valueChanged y escribir el cdigo siguiente:
private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) { String nombre=(String)jList1.getSelectedValue(); jTextField1.setText(nombre); }

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

El jTable trae por defecto 4 columnas pero podemos modificar el nmero de las mismas. Aada antes de la declaracin de la clase: import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; Luego de la declaracin de la clase: String titulos[]=new String[4]; String datos[][]=new String[2][4];

Ahora en el evento windowOpened titulos[0]="Cdigo"; 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));

JInternalFrame
Vamos a hacer una aplicacin que alterne entre dos jInternalFrame. Debe verse as en el diseo:

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

Escriba el siguiente cdigo para el evento actionPerformed (detecta el evento ms comn 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); }

JMenuBar, Jmenu, JmenuItem


Cree un aplicacin visual sin clase principal. Vamos a mostrar y ocultar 2 jInternalFrame en funcin de la seleccin de opciones del men. Coloque 2 jInternalFrame como en el ejemplo anterior (no olvide colocar el title para cada uno). Se ver as:

Vaya a la ventana de cuadro de controles y seleccione un jMenuBar. Arrstrelo al frame. Se ver como sigue:

Se aade 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 diseo sobre la expresin Menu Escriba Elegir. Ahora en la ventana del inspector haga clic derecho sobre la expresin jMenu1 y elija add jMenuItem

Ahora se ve un nuevo elemento

Seleccione el jMenuItem1, vaya a la ventana de propiedades y seleccione text y anote ir al 1. Aada un jMenuItem ms al jMenu1 y como text que diga ir al 2. Aada un jSeparator y luego otro jMenuItem para jMenu1 que diga Salir. Se ver as en el inspector.

Note que todos son elementos de jMenu1 (un error comn es aadir los nuevos elementos sobre el inmediato anterior es decir jMenuItem2 dentro de jMenuItem1). Para aadir cdigo a cada item del men por ejemplo haga clic derecho sobre jMenuItem1 seleccione Events-action-actionPerformed y luego escribe el cdigo correspondiente. Escriba el siguiente cdigo:

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

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 diseo, ms o menos en la posicin de la flecha.

Abajo a la izquierda en la ventana denominada inspector aparece la referencia Other Components y por debajo se ven el jDialog1 y el jOptionPane1.

A estas alturas Ud. ya declaro null el layout y cambio el resize policy. Haga doble clic en la referencia al jDialog y aada un botn al mismo. No modifique el tamao que eso lo haremos por cdigo.

actionPerformed del botn Mostrar en el Frame principal private 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 botn 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); }

You might also like