swing y netbeans

Post on 26-Jul-2015

621 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Swing

Magíster Víctor Andrade Soto

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

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..

Primero debemos añadir 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 código que corresponde al evento que “se dispara” cuando le ventana (window/formulario) se abre (opened).

Entre las llaves escribimos el código:

String s=” Se mostrará formulario”;

JOptionPane.showMessageDialog(null,s);

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.

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

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

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í:

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.

Declaración e inicialización del arreglo:

Botón Generar:

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

Al hacer click en el botón mostrar:

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.

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)

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 serán parte de un buttonGroup

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

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

JComboBox

Para llenar el jComboBox luego de arrastarlo y diseñarlo 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 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.*;

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

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

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

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 añadir elementos como se muestra:

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

}

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 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];

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

JInternalFrame

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

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

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

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

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

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

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.

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:

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 diseño, más o menos en la posición 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 añada un botón al mismo. No modifique el tamaño que eso lo haremos por código.

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

top related