Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Visual Con Java Parte 1
Programacion Visual Con Java Parte 1
INDICE
Introduccin Conceptos Bsicos NetBeans IDE en la Programacin Visual Uso de los objetos JLabel, JTextfield y JButton Uso de los objetos JRadioButton y JCheckBox Uso del objeto JList Uso del objeto JComboBox Uso del objeto JTable 03 04 07 12 29 38 52 64
INTRODUCCION
El presente documento tiene como objetivo fundamental servir como gua didctica para la programacin visual en java para los alumnos de la Escuela Acadmica Profesional de ingeniera de Sistemas e Informtica de la Universidad Nacional del Santa.
Programacin Visual est orientada al diseo de aplicaciones bajo entorno visual comnmente a travs del uso del formulario. En este manual se har una presentacin y estudio de las interfaces visuales a travs del entorno de desarrollo denominado NetBeans, es decir, utilizaremos el lenguaje de programacin Visual Java. El presente documento se encuentra dividida en partes: la primera es Manipulacin de controles, la segunda es Diseo de formularios y Mens y la tercera es Sistemas de Aplicacin.
En la primera parte se estudiar a los objetos de control bsicos como son JLabel, JTextField, JButton, JRadioButton, JCheckBox, JList, JComboBox y Jtable; en la segunda parte se tendr en cuenta el diseo de aplicaciones a partir de casos, lo cual implica el uso de los objetos de control bsicos estudiados en la primera parte como tambin la construccin o diseo de mens; y en la tercera se abarcar la construccin o diseo de sistemas de aplicaciones haciendo uso de las sentencias selectivas, repetitivas y el uso de arreglos como tambin se ver el uso de interfaces multimedia y paquetes.
Pgina
RESUMEN
Por mucho tiempo los desarrolladores de software han hecho su trabajo usando lenguajes textuales de programacin, pero eso est a punto de cambiar. en este artculo se presenta el paradigma de la programacin visual y los lenguajes visuales de programacin como una alternativa para mejorar la produccin de aplicaciones de software.
Qu es Programacin Visual?
El concepto de programacin visual es un poco confuso ya que actualmente se le considera programacin visual a los lenguajes de programacin textual que tienen una interfaz grfica para poder visualizar lo que uno esta desarrollando. Este concepto en programacin visual es errneo ya que este es aquel que por medio de iconos puedes ir creando programas sin tener un lenguaje textual atrs de el.
La programacin visual (visual programming) se refiere al desarrollo de software donde las notaciones grficas y los componentes de software manipulables interactivamente son usados principalmente para definir y componer programas.
La programacin visual se define comnmente como el uso de expresiones visuales (tales como grficos, animacin o iconos) en el proceso de la programacin, pueden ser utilizadas para formar la sintaxis de los nuevos lenguajes de programacin visuales que conducen a los nuevos paradigmas tales como programacin por la demostracin; o pueden ser utilizadas en las presentaciones grficas del comportamiento o de la estructura de un programa. El objetivo de la programacin visual es mejorar la comprensin de los programas y simplificar la programacin en s. Ms all, la programacin visual deber fomentar a los usuarios finales a construir sus propios programas, que de otra forma deben ser escritos por programadores profesionales.
Pgina
La programacin visual brinda los conocimientos necesarios para disear y desarrollar aplicaciones con un entorno visual amigable y fcil de utilizar por el usuario. Los lenguajes de programacin visual, como Visual Java, hacen sencilla la tarea de los programadores porque antes constitua una gran demora tiempo en el diseo de ventanas o formularios.
Los objetos se pueden agrupar para formar las clases. El estado de los objetos est determinado por los datos. Pueden heredar propiedades o atributos de otros objetos. Usando Mensajes un objeto se puede comunicar con otro objeto. Los mtodos definen el comportamiento de los objetos.
Package Util: compuesta por clases para utilizadas como nmeros aleatorios,
vectores, propiedades del sistema, etc.
Cualquier programa hecho en Java lleva a definir un archivo de extensin .java. El programa debe pasar por un proceso de compilacin que consiste en convertir tu programa fuente (el archivo de extensin .java) en un archivo de extensin .class y conjuntamente con la biblioteca de clases se logra interpretar lo programado, es as cuando ya se puede ejecutar el programa y ver los resultados en la pantalla del computador. Para este curso, en el que veremos programacin visual y por lo tanto el uso de formularios, se crear un archivo adicional con extensin.frm que guardar la estructura o diseo del formulario.
Pgina
Para dar inicio a una aplicacin de Java bajo el entorno de Netbeans se debe definir un proyecto, para ello, seleccionas la opcin del men denominada File. Se muestra inmediatamente un men flotante cuya primera opcin indica New Proyect, est opcin la seleccionas.
Ing. Mirko Manrique Ronceros Pgina 7
Dado que nuestras aplicaciones van ser desarrolladas en entorno visual en Categories seleccionas la carpeta Java y en Proyects seleccionas Java Application. Luego hacer click en el botn de comando Next que mostrar la siguiente ventana:
Pgina
Es conveniente que uno mismo cree su carpeta de destino de los archivos que se generan para la construccin de una aplicacin. Supongamos que la carpetas que necesitamos crear se llama Ejercicios y la creamos en la unidad E, para ello es necesario dar click en el botn de comando Browse. Una vez indicada la nueva carpeta Ejercicios, procede a dar click en el botn de comando Abrir quedando la ventana New Java Application de la siguiente forma:
Pgina
Se observa que en Proyect Location se muestra la carpeta destino del proyecto. Vamos a suponer que se quiere construir un programa que calcule el promedio de dos notas, entonces la ventana debera quedar de la siguiente forma:
Pgina 10
Al dar click en Finish se mostrar el entorno de desarrollo de NetBeans listo para dar inicio a la construccin de la aplicacin.
Cuando se pretenda construir una aplicacin de entorno visual tendramos que usar plantillas que el mismo NetBeans IDE te ofrece. Ahora, seleccionemos el paquete ejercicios y luego elijamos la opcin New y a continuacin seleccionemos JFrameForm
Pgina 11
Una vez seleccionada la opcin JframeForm se muestra la ventana New Jframe Form para definir el nombre de clase.
Como nombre de clase le pondremos frmPromedio2Notas esto generar un archivo de extensin .java dentro de la ruta: E:\Ejercicios\Promedio2Notas\src\ejercicios\frmPromedio2Notas.java y como veremos todo se encuentra dentro de la carpeta Ejercicios creada inicialmente en la unidad E
Pgina 12
Al dar click en el botn de comando Finish se mostrar el entorno de desarrollo de NetBeans listo para dar inicio al diseo de un formulario y por lo tanto dar comienzo a una aplicacin en un entorno visual.
Pgina 13
Solucin:
Estando en el entorno de desarrollo NetBeans seleccionamos la opcin del men y luego la opcin New Proyect.
Pgina 14
Seleccionamos para Categories Java y para Proyects Java Application y luego damos click en el botn de comando Next.
Usamos el botn de comando Browse para crear una carpeta denominada Ejercicios en la unidad E. En Proyect Name colocamos AreaTriangulo y en el cuadro de texto referido a Create Main Class colocamos ejercicios.AreaTriangulo, lo cual permitir crear un paquete denominado ejercicios y como primera clase AreaTriangulo, es decir, se crea el archivo AreaTriangulo.java que pertenecer al paquete ejercicios.
Sabemos que en Java una clase tiene comnmente al mtodo Main que es el mtodo que se ejecuta cuando se aplica Run a la aplicacin construida. En el entorno de NetBeans, una clase creada, crea un mtodo que tiene el mismo nombre de la clase a la que se denomina mtodo constructor y toda programacin hecha en ste mtodo se ejecutar primero antes que el mtodo main. NetBeans generar un paquete (Package) denominado ejercicios y dentro de ella se mostrar la clase de acceso pblico AreaTriangulo. El entorno de desarrollo de NetBeans despus de dar click en el botn Finish queda as:
Agregamos al cdigo de la programacin generada, por debajo del package ejercicios, lo siguiente: import java.io.*; import javax.swing.*; El paquete javax.swing.*; permitir poder crear ingresos y salida de datos a travs de cajas de mensaje.
Agregamos al cdigo en el mtodo Main de la clase AreaTriangulo como se aprecia a continuacin (lo escrito en azul).
Pgina 16
package ejercicios; import java.io.*; import javax.swing.*; /** * * @author Administrador */ public class AreaTriangulo { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { int base, altura; double area; base=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la base: ")); altura=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la altura")); area=base*altura/2; JOptionPane.showMessageDialog(null,"El area del triangulo es: "+area); } } En el mtodo main observamos que para leer el dato para la variable base utilizamos el mtodo showInputDialog de la clase JOptionPane que a su vez pertenece al paquete swing, que mostrar un caja de mensaje para la lectura de datos. De igual manera se trabajar para leer el dato de altura. Tambin se observa el mtodo showMessageDialog de la clase JOptionPane que permite mostrar en una caja de mensaje el resultado del clculo del rea.
Seleccionamos AreaTriangulo en el entorno de desarrollo de NetBeans y luego damos click botn derecho del Mouse. Se visualiza un men flotante, se elige la opcin Run File y se proceder a ejecutar el programa.
Pgina 17
Nos pide el ingreso del valor de la base y luego de dar click en el botn de comando Aceptar se mostrar la siguiente ventana:
Pgina 18
Text: Contiene el valor que se visualizar en el formulario. Font: Permite establecer el tipo de letra de la expresin a mostrar en el formulario. Border: Para establecer el tipo de borde de la etiqueta. Enabled: Para habilitar o inhabilitar el uso del objeto de control.
Text: Contiene el valor o dato introducido en el cuadro de texto. Font: Permite establecer el tipo de letra del texto en la caja. Border: Para establecer el tipo de borde del cuadro de texto. Enabled: Para habilitar o inhabilitar el uso del objeto de control. getText(): Permite obtener el texto introducido en el cuadro de texto. setText(): Permite colocar un texto en el objeto JTextField. requestFocus(): permite asignar el cursor al objeto de control
Mtodos ms usados:
Pgina 19
Propiedades ms usadas:
Text: Contiene el valor o dato introducido en el cuadro de texto. Font: Permite establecer el tipo de letra del texto en la caja. Enabled: Para habilitar o inhabilitar el uso del objeto de control. ActionPerformed: Este evento se lleva a cabo cuando el usuario da click sobre el objeto de control JButton.
Evento ms usado:
Una aplicacin usando los objetos de control Ahora procedamos a desarrollar la misma aplicacin usando como interfase un formulario y los objetos de control antes mencionado. Solucin:
Seleccionamos el paquete ejercicios y damos click botn derecho del mouse y eligimos la opcin New y posteriormente JframeForm.
Se muestra la ventana New JFrame Form y colocamos en Class Name el nombre del formulario: frmAreaTriangulo.
Pgina 20
En esta ventana se observa que la clase denominada frmAreaTriangulo generar un archivo de extensin .java denominado frmAreaTriangulo que se almacenar dentro de la carpeta ejercicios y pertenecer al paquete ejercicios.
Al momento de dar click en el botn de comando Finish se visualizar el entorno de desarrollo NetBeans y al lado derecho se muestra la paleta de los objetos de control (Swing Controls).
Pgina 21
Sobre el diseo del formulario damos click botn derecho y seleccionamos Set Layout y posteriormente AbsoluteLayout.
Es necesario usar AbsoluteLayout para que permita dibujar los objetos de control en el lugar donde uno quiere en el formulario. Ahora procedamos a colocar un objeto Jlabel seleccionando de la paleta Swing Controls Label y lo arrastramos hacia el diseo del formulario.
Pgina 22
Ahora procedamos a usar a cambiar los valores de las propiedades de los objetos de control en la ventana de propiedades: Objeto de Control JLabel1 JLabel2 JLabel3 JTextField1 JTextField2 JTextField3 JButton1 JButton2 JButton3 Text Text Text Text Text Text Text Text Text Propiedad BASE: ALTURA: El rea del Tringulo es: (Vaco o limpiar) (Vaco o limpiar) (Vaco o limpiar) CALCULAR LIMPIAR CERRAR Valor de la Propiedad
Luego de aplicar los cambios en los valores de propiedades el diseo del formulario debe quedar de la siguiente manera:
Pgina 23
Es necesario darle un nombre propio a los objetos de control y sobretodo a aquellos que intervienen en la lgica de la programacin. Seleccionamos el objeto de control JTextField1 y damos click con el botn derecho del mouse y se visualizar un men flotante y seleccionamos Change Variable Name.
Pgina 24
Continuamos con los objetos de control siguientes: Objeto de Control JTextField2 JTextField3 JButton1 JButton2 JButton3 txtAltura txtArea btnCalcular btnLimpiar btnCerrar Nombre
Ahora procedamos a programar en los botones de comando. En el botn CALCULAR (btnCalcular) al darle doble click y escribir el siguiente cdigo: (lo escrito en azul) private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { int base, altura; double area; base=Integer.parseInt(txtBase.getText()); altura=Integer.parseInt(txtAltura.getText());
Pgina 25
area=base*altura/2; txtArea.setText(String.valueOf(area)); } Una vez declaradas las variables de memoria, a la variable base se le asigna el valor introducido en el cuadro de texto txtBase. El mtodo getText() permite obtener el dato introducido y con el mtodo parseInt de la clase Integer es convertido a numrico entero. Se hace lo mismo para la variable altura. Para mostrar el clculo de rea se utiliza el mtodo setText del cuadro de texto txtArea que permite visualizar el contenido de la variable area. A la variable se le aplica el mtodo valueOf de la clase String para convertir el dato rea en cadena de caracteres. En el botn LIMPIAR (btnLimpiar) luego de darle doble click escribimos el siguiente cdigo: (lo escrito en azul) private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) { txtBase.setText(""); txtAltura.setText(""); txtArea.setText(""); txtBase.requestFocus(); } Se limpian los cuadros de textos a travs del mtodo setText() y con el mtodo requestFocus() se pasa el cursor al objeto de control txtArea. En el botn CERRAR (btnCerrar) luego de darle doble click, escribimos el siguiente cdigo: (lo escrito en azul) private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } El mtodo dispose() permite descargar el formulario y terminar la ejecucin de la aplicacin.
Pgina 26
Procedemos a ejecutar la aplicacin seleccionado frmAreaTriangulo y al dar clic botn derecho eligimos Run File.
Podemos observar que el formulario sale con los objetos de control cercano a los bordes del formulario y el mismo formulario se visualiza pegado en la parte superior izquierda de la pantalla del computador. Vamos a proceder a corregir estos defectos agregando dos lneas de cdigo en el mtodo constructor de la clase frmAreaTriangulo. (escribe lo que est en azul) public class frmAreaTriangulo extends javax.swing.JFrame { /** Creates new form frmAreaTriangulo */
Pgina 27
public frmAreaTriangulo() { initComponents(); setSize(400,250); setLocation(250,250); } El mtodo setSize() permite establecer el tamao del formulario y el mtodo setLocation() permite ubicar el formulario dentro de la pantalla. Los mtodos antes mencionados pertenecen al formulario frmAreaTriabgulo. Otros mtodos del formulario se vern ms adelante. Procedemos nuevamente a ejecutar el formulario frmAreaTriangulo y se mostrar de la siguiente manera:
Pgina 28
Text: Permite establecer la expresin de la opcin. Font: Permite establecer el tipo de letra en el objeto de control. Enabled: Para habilitar o inhabilitar el uso del objeto de control.
Mtodo ms usado: isSelected(): retorna el valor de verdadero si el objeto se encuentra seleccionado y falso en caso contrario.
Pgina 29
Text: Permite establecer la expresin de la opcin. Font: Permite establecer el tipo de letra en el objeto de control. Enabled: Para habilitar o inhabilitar el uso del objeto de control. isSelected(): retorna el valor de verdadero si el objeto se encuentra seleccionado y falso en caso contrario.
Mtodo ms usado:
Aplicacin 1 Vamos a construir una aplicacin en entorno visual que permita ingresar del costo de un artefacto, del tipo de artefacto y la forma de pago, para calcular lo siguiente:
c. El monto del IGV es del 19% sobre el costo del artefacto luego de aplicar el
descuento o el incremento.
Pgina 30
Solucin:
Procedamos a crear un proyecto denominado Aplicaciones dentro de una carpeta llamada Practicas y como clase Aplicacin1 que pertenece al paquete de ejemplos. Luego damos click en el botn de comando Finish.
Seleccionamos la carpeta de ejemplos, damos click con el botn derecho del mouse y elegimos la opcin New y posteriormente JframeForm.
A continuacin, se visualiza la siguiente ventana y cambiamos el nombre de la clase indicado por la flecha:
Pgina 31
Ahora procedemos a disear el formulario, donde se har nfasis en el manejo de los nuevos objetos de control. No olvidemos que cada vez que usemos un formulario su Layout debe ser cambiado a Absolute Layout como se aprecia en la siguiente figura:
Pgina 32
Dibujamos como etiqueta (usando un JLabel) la expresin: Costo del Artefacto y el cuadro de texto (Usando un JtextField). Tambin a travs de una etiqueta colocamos la expresin Tipo de Artefacto y luego 3 objetos JRadioButton. Los objetos JRadioButton deben expresar Audio, Video y Lnea Blanca. Debemos recordar que se tendr que hacer uso de la propiedad Text para cambiar las expresiones.
De la paleta SwingControls seleccionamos ButtonGroup y lo arrastramos hacia el formulario. Esto ocasionar que se cree un objeto ButtonGroup1 tal como se aprecia en el navegador (lado izquierdo del diseo del formulario).
Pgina 33
Seleccionamos el objeto JRadioButton referido a Audio y luego buscamos en la ventana de propiedades, la propiedad buttongroup y luego eligimos buttongroup1.
Lo mismo hacemos para los tipos de artefactos Video y Lnea Blanca. Por lo tanto, los tres objetos JRadioButton deben pertenecer a buttongroup1. Si pretendemos en estos momentos ejecutar el formulario podremos seleccionar uno de los tres tipos de artefactos.
A continuacin, agregamos un objeto JCheckBox para indicar la forma de pago que solo puede ser de dos posibilidades: Contado o Crdito. Seleccionado significa al Contado, no seleccionado significa al crdito. Agregamos los dems objetos de control que se visualiza en el diseo del formulario y que fueron estudiados en la sesin anterior. En el diseo del formulario se indica los nombres de los objetos y debemos recordar que para asignar un nombre a un objeto de control hay que seleccionar al objeto y dando click con el botn derecho del mouse se procede a seleccionar la opcin Change Variable Name
Pgina 34
Procedamos a programar en los botones de comando: En el botn de comando CALCULAR (btnCalcular), al darle doble click, escribimos el siguiente cdigo: (lo escrito en azul) private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { double costo, dcto=0, incre=0, igv, mpagar; costo=Double.parseDouble(txtCosto.getText()); if (chkContado.isSelected()) { if (rbAudio.isSelected()) dcto=costo*0.06; if (rbVideo.isSelected()) dcto=costo*0.08; if (rbLinea.isSelected()) dcto=costo*0.05;
} else { if (rbAudio.isSelected()) incre=costo*0.07; if (rbVideo.isSelected()) incre=costo*0.09; if (rbLinea.isSelected()) incre=costo*0.1; } igv=(costo-dcto+incre)*0.19; mpagar=(costo-dcto+incre)+igv; txtDcto.setText(String.valueOf(dcto)); txtIncre.setText(String.valueOf(incre)); txtIgv.setText(String.valueOf(igv)); txtMPagar.setText(String.valueOf(mpagar)); }
Una vez declaradas las variables de memoria, en la variable costo se asigna el valor introducido en el cuadro de texto txtCosto gracias al mtodo getText() que logra obtener el dato colocado en el objeto de control. Con la sentencia if se evala si est seleccionada la opcin al contado y, si es as, se procede a evaluar cul de los tipos de artefactos est seleccionado para aplicar el clculo del descuento que ser asignando a la variable de memoria dcto. En caso que no est seleccionada la opcin al Contado entonces se asume que la forma de pago es al crdito y se procede a evaluar cul de los tipos de artefactos est
Pgina 35
seleccionado para aplicar el clculo del incremento que ser asignado a la variable incre. A continuacin, se calcula el IGV y el monto a pagar. Luego, los objetos de control txtDcto, txtIncre, txtIgv y txtMPagar reciben valores a travs de las variables de memoria dcto, incre, igv y mpagar en sus cuadros de textos gracias al mtodo setText(), por supuesto previamente se tiene que convertir a cadena de texto los valores numricos de las variables usando el mtodo valueOf() de la clase String. En el botn de comando BORRAR (btnBorrar), luego de darle doble click, escribimos el siguiente cdigo: (lo escrito en azul) private void btnBorrarActionPerformed(java.awt.event.ActionEvent evt) { txtCosto.setText(); txtDcto.setText(); txtIncre.setText(); txtIgv.setText(); txtMPagar.setText(); rbAudio.setSelected(false); rbVideo.setSelected(false); rbLinea.setSelected(false); chkContado.setSelected(false); txtCosto.requestFocus(); } Se limpian los cuadros de textos con slo poner en el mtodo setText() y a los objetos botn de radio (JRadioButton) y el objeto de caja verificacin (JCheckBox) se les aplica el mtodo setSelected() para lograr quitar la seleccin de estos objetos. Lo ms importante es que los cuadros de textos estn limpios para poder permitir el ingreso de nuevos datos. En el botn de comando CERRAR (btnCerrar), luego de darle doble click, escribimos el siguiente cdigo: (lo escrito en azul) private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { dispose(); }
Pgina 36
El mtodo dispose() permite descargar el formulario y terminar la ejecucin de la aplicacin. Luego procedemos a ejecutar la aplicacin seleccionando frmAplicacion1 en la pgina o pestaa Proyects (se encuentra al lado izquierdo del diseo del formulario) y al dar click botn derecho elegimos Run File.
Pgina 37
Mtodos ms usados:
setModel(): Permite vincular una variable objeto de tipo model a un objeto de control JList. getSelectedValue(): Contiene el tem seleccionado de la caja de lista.
Pgina 38
getSelectedIndex(): Contiene el valor del ndice activo o ndice actual del tem seleccionado de la caja de lista. El ndice es un valor numrico correlativo no visible que va desde 0.
Evento ms usado: ValueChanged(): Sucede cuando el usuario selecciona un tem de la caja de lista. Aplicacin Construir una aplicacin que permita el ingreso del nombre del alumno y poder seleccionar uno o varios cursos que ste quisiera llevar. El pago por los cursos seleccionados podr ser pagado al contado o al crdito. Si el pago es al contado hay un descuento del 5% del costo total de los cursos a llevar y si el pago es al crdito se pagar un incremento del 7% del costo total. La aplicacin debe mostrar el descuento, el incremento y el monto a pagar por los seleccionados. Solucin:
Iniciamos
con
la
creacin
de
un
proyecto
denominado
Aplicaciones.
Seleccionamos del men, la opcin File y luego New Proyect. Aparece la ventana de New Proyect y damos clic en el botn de comando Next. En la ventana New Java Application indicamos como nombre de proyecto Aplicaciones creando como paquete aplicaciones. Al dar click en el botn de comando Finish nos encontramos con el entorno de desarrollo.
Pgina 39
Seleccionamos el paquete de aplicaciones y al dar click con el botn derecho del mouse elegimos la opcin New y luego JFrameForm.
A continuacin se muestra la ventana New Jframe Form que debe quedar as:
Pgina 40
No olvidemos de dar click botn derecho del mouse sobre el formulario y establecer AbsoluteLayout en Set Layout.
Procedemos
colocar
un
objeto
Jlabel
con
la
expresin
ALUMNO:
acompaado de un cuadro de texto (JTextField). Luego, colocar un Jlabel que exprese Seleccionar Cursos y debajo de esta expresin dibujar un objeto JScrollPane.
Pgina 41
En el objeto JScrollPane colocamos un objeto JList y al momento de llevarlo al diseo del formulario se muestra de la siguiente manera:
Seleccionamos el objeto de control Jlist1 y en la ventana de propiedades se tiene una propiedad llamada model que permite colocar los tems dentro de la caja de lista Jlist1.
Pgina 42
Luego de seleccionar el botn de comando referido a la propiedad model se muestra la siguiente ventana:
Ingresemos los nombres de los cursos tal como se muestra en la siguiente ventana:
Pgina 43
Luego vamos a colocar en el diseo del formulario otro objeto JScrollPane junto a JList1 para luego poner un objeto JList. En esta lista colocaremos los costos de cada curso.
Pgina 44
Adicionalmente pondremos en el diseo del formulario dos botones de comando referido a Agregar y Eliminar y junto a ellos dos objetos Jlist, por supuesto previamente debemos usar dos objetos JScrollPane.
Pgina 45
Posteriormente agregamos las formas de pago con dos objetos JRadioButton, los botones de comando Calcular, Limpiar y Cerrar. Finalmente, los objetos que mostrarn el descuento, el incremento y el monto a pagar por los cursos seleccionados. El diseo del formulario debe quedar as:
Ahora bien, si observamos en el diseo del formulario de las cuatros objetos Jlist, dos de ellos ya tienen tems como lo son lstCursos y lstCostos. En cambio, los objetos lstCursel y lstCos se llenarn en funcin a lo seleccionado y agregado con el botn de comando Agregar. Por lo tanto, debemos definir un modelo (model) para aquellas listas que se llenarn en tiempo de ejecucin. Por esto debemos definir las variables modelo1 y modelo2 como DefaultListModel(), como se muestra a continuacin (escribe lo que indica las flechas de color rojo):
Para que funcione correctamente la clase DefaultListModel es necesario agregar el paquete import javax.swing.*; despus del paquete Aplicaciones.
Pgina 46
Una vez definidas las variables modelo1 y modelo2, en el mtodo constructor se debe indicar que la variable modelo1 es para la caja de lista lstCursel y la variable modelo2 es para la caja de lista lstCos, todo esto se podr hacer con el mtodo setModel(). Tambin hacemos que los botones de comando Agregar y Eliminar se inhabiliten desde la ejecucin de la aplicacin.
Bien, ahora debemos programar sobre el objeto lsrCursos, para que el usuario al momento de seleccionar un curso se marque simultneamente el costo y se habilite el botn de comando Agregar. Para esto se debe seleccionar un evento de la caja de lista lstCursos llamado ValueChanged perteneciente a ListSelection.
Pgina 47
Se declara una variable entera llamada ndice, esta variable recibe el valor del ndice del tem seleccionado gracias al mtodo getSelectedIndex(). Por ejemplo, si de la caja de lista lstCursos estuviera seleccionado Power Builder, ste mtodo devolvera el valor de 1. El valor 0 lo tiene Visual Basic, el valor de 2 lo tiene Visual Java y as sucesivamente. Lo que se quiere es seleccionar el tem de la caja de lista de lstCostos que tenga el mismo ndice que lstCursos, para ello se usa el mtodo setSelectedIndex(indice) para dar el mismo ndice a la caja de lista lstCostos. Finalmente, hacemos que el botn de comando Agregar se habilite con el mtodo setEnabled().
A continuacin, escribimos el siguiente cdigo en el botn de comando Agregar (slo se escribe lo que seala la llave de color rojo):
Pgina 48
Aqu declaramos dos variables de tipo String llamados curso y costo y las variables enteras cuenta, i y total. En la variable curso se almacena el curso seleccionado en la lista lstCursos, el mtodo getSelectionValue() trae consigo el tem seleccionado pero lo trae como objeto y al poner (String) hacemos que se convierta en cadena para que pueda ser asignada a la variable curso. De igual manera se hace con la variable costo. Para agregar un tem a una caja de lista se usa el mtodo addElement perteneciente al objeto variable modelo1 o modelo2. Con la variable cuenta se almacena el total de tems que hay en la caja de lista lstCos pero a travs de la variable objeto modelo2. Con la sentencia repetitiva for se busca extraer cada uno de los tems de la caja de lista lstCos e ir sumando en cada interaccin para poder encontrar el costo total de los cursos seleccionados, para esto usamos el mtodo elementAt() que devuelve un tem de una caja de lista con slo indicar el valor del ndice. Finalmente en el objeto txtTotal se visualiza el contenido de la variable total e inhabilitamos el botn de comando Agregar. Ahora programamos en la caja de lista lstCursel el evento ValueChanged cuando querramos seleccionar un curso para luego eliminarlo (slo escribe lo que seala la llave de color rojo).
La idea es la misma que se aplic en la programacin sobre el evento ValueChanged del objeto lstCursos. La diferencia est en que esta vez se habilita el botn de comando Eliminar. En el botn de comando Eliminar colocamos la siguiente programacin (slo se escribe lo que seala la llave de color rojo):
Pgina 49
Lo novedoso de esta programacin es la presencia del mtodo remove() que elimina un tem de la lista a travs de la variable objeto modelo1 modelo2 dado el valor del ndice. Al final de la programacin se vuelve a calcular el costo total de los cursos seleccionados y se inhabilita el botn de comando Eliminar. Ahora procedemos a programar en el botn de comando Calcular (slo se escribe lo que seala la llave de color rojo):
A continuacin procedemos a programar en el botn de comando Limpiar (slo se escribe lo que seala la llave de color rojo):
Pgina 50
En esta programacin, la novedad est en que para limpiar totalmente una caja de lista se hace con el mtodo clear() perteneciente a las variables objeto modelo1 y modelo2, con lo cual tambin se hace la limpieza a los objetos lstCursel y lstCos. Tambin, hacemos el uso del mtodo setSelectedIndex() dando el valor de 5, ya que dicho ndice no existe en la caja de lista, lo que hace que se pierda lo seleccionado. Finalmente programamos en el botn de comando Cerrar:
Pgina 51
Una vez dado clic en el botn de despliegue se muestra las opciones o tems del objeto
Propiedades ms usadas:
Model: Permite establecer los tems de la caja de lista. Font: Permite establecer el tipo de letra en el objeto de control. Enabled: Para habilitar o inhabilitar el uso del objeto de control. getSelectedIndex: Contiene el ndice del tem seleccionado setSelectedItem: Contiene el tem seleccionado
Mtodos ms usados: setModel(): Permite vincular una variable objeto de tipo model a un objeto de control JList. getItemAt(): Devuelve el tem que est en el ndice que se especifica.
Pgina 52
getSelectedIndex(): Contiene el valor del ndice activo o ndice actual del tem seleccionado de la caja de lista. El ndice es un valor numrico correlativo no visible que va desde 0.
Evento ms usado: ValueChanged(): Sucede cuando el usuario selecciona un tem de la caja de lista. Aplicacin Construir una aplicacin que permita el ingreso del nombre del alumno y poder seleccionar de una lista desplegadle una categora de los cursos. Al momento de seleccionar la categora se debe mostrar los cursos con sus respectivos costos en las cajas de listas (los JList que se muestran al lado izquierdo del diseo del formulario). Una vez visualizado los cursos el usuario puede seleccionar y agregar en las cajas de listas (los Jlist que se muestran al lado derecho del diseo del formulario) los cursos solicitados por el alumno. El pago por el servicio de enseanza se establece de la siguiente manera: Existe un pago por matrcula del 80% del costo total (suma de los costos de los cursos escogidos) siempre y cuando quiera el alumno llevar un solo curso, 60% del costo total si lleva dos cursos y 50% del costo total si lleva 3 o ms cursos. El costo total tiene un descuento del 10% si la forma de pago es al contado y un incremento del 10% si es al crdito. Existe un pago mensual cuando la forma de pago es al crdito y es equivalente al costo total incrementado dividido en 4 cuotas. Solucin: Usars el mismo proyecto utilizado en la sesin anterior y slo agregars un formulario (Jframe).
Pgina 53
A continuacin se muestra el entorno de desarrollo de NetBeans y no olvides de dar clic en el botn derecho del mouse sobre el formulario y establece AbsoluteLayout en Set Layout.
Pgina 54
Procede a colocar un objeto Jlabel con la expresin ALUMNO: acompaado de un cuadro de texto (JTextField). Por debajo de ALUMNO: colocar un objeto Jlabel que exprese Categora de Cursos: y al lado derecho de ste objeto colocar un objeto JComboBox.
Selecciona el objeto JComboBox y elige en la ventana de propiedades la propiedad model que permite colocar los tems dentro de la caja de lista desplegadle
Pgina 55
Luego de seleccionar el botn de comando referido a la propiedad model se muestra la siguiente ventana:
Ingresas las categoras de cursos como son: <Seleccionar>, Diseo Grfico, Diseo Web, Ofimtica, Lenguajes de Programacin y Sistemas Operativos, quedando el diseo del formulario de la siguiente manera:
Colocars un objeto Jlabel con la expresin Cursos Ofertados y otro objeto Jlabel ubicado al lado derecho de ste ltimo con la expresin Costo. Aades dos listas debajo de las expresiones de estos dos ltimos Jlabel, haciendo que los tems sean eliminados o removidos a travs del uso de la propiedad model. Luego agregas dos botones de comando que indiquen Agregar y Eliminar. Posteriormente, aades dos objetos Jlabel que expresen: Cursos Escogidos y Costo y debajo de estos objetos Jlabel agregas dos objetos JList siendo tambin eliminados o removidos los tem a travs del uso de la propiedad model.
Pgina 56
A continuacin agregas un objeto Jlabel con la expresin Forma de Pago: y al lado derecho de ste ltimo objeto colocas un JComboBox que debe contener como tems: <Seleccionar>, Contado y Crdito. Luego los botones de comando CALCULAR, BORRAR y CERRAR y los objetos que mostrarn el monto de la matrcula, el costo total y el pago mensual. Los nombres de los objetos de control dibujados en el formulario queda de la siguiente manera:
Pgina 57
Ahora bien, si observamos en el diseo del formulario, los cuatros objetos JList no tienen tems. Los objetos JList referidos a Cursos Ofertados y Costo (objetos ubicados al lado izquierdo del diseo del formulario) se llenarn de tems de acuerdo a lo seleccionado en la lista desplegadle referido a la Categora de Cursos. Los objetos Jlist referidos a Cursos Escogidos y Costos se llenarn en la medida que se seleccione un curso ofertado y se agregue con el botn de comando Agregar. Los 4 objetos JList deben tener un modelo (model) cada uno, para ello debes definir 4 variables: modelo1, modelo2, modelo3 y modelo4 del tipo DefaultListModel(). Para poder hacer uso de la clase DefaultListModel se debe hacer uso del paquete javax.swing.*; y debe ser escrito despus del paquete Aplicaciones.
Ahora procede a escribir la definicin de las variables del tipo DefaultListModel en la clase frmCursosExtension.
Una vez definido las 4 variables de memoria del tipo DefaultListModel, en el mtodo constructor se debe indicar que la variable modelo1 es para la caja de lista lstCurOfer, la variable modelo2 para la caja de lista lstCostos, la variable modelo3 es para la caja de lista lstCurEsco y la variable modelo4 es para la caja de lista lstCos. Tambin hacemos que los botones de comando Agregar y Eliminar se inhabilite su uso desde la ejecucin de la aplicacin. Adems le indicamos una localizacin dentro de la pantalla y el tamao del formulario (slo escribe lo que seala la llave de color rojo).
Pgina 58
Ahora le toca el turno en la programacin al objeto JComboBox denominado cboCategorias en el evento ActionPerformed, para ello debes seleccionar el objeto mencionado y dando clic botn derecho del mouse eliges Events y luego como Actions seleccionas ActionPerformed.
En
el
evento lo (slo
Pgina 59
Se declara una variable de memoria llamada indice para que almacene el ndice actual del tem seleccionado del objeto JComboBox llamado cboCategorias. Sabiendo el valor del ndice actual o activo se hace uso de una sentencia selectiva switch que evala cul de los tems ha sido seleccionado. Se sabe que el primer tem de la lista desplegadle es <Seleccionar> y le corresponde el ndice 0, Diseo Grfico el ndice 1, Diseo Web el ndice 2 y as sucesivamente. Cuando sea <Seleccionar> solo se procede a limpiar los objetos lstCurOfer y lstCostos a travs del mtodo clear() aplicados a las variables modelo1 y modelo2. Si el tem seleccionado es Diseo Grfico se procede a limpiar los objetos lstCurOfer y lstCostos y se agrega los nombres de los cursos Corel Draw y Photo Show con sus respectivos costos a travs del uso del mtodo addElement aplicados a las variables modelo1 y modelo2 que tienen relacin directa con los objetos lstCurOfer y lstCostos. De igual forma se trabaja para los dems tems del objeto JComboBox llamado cboCategorias. Si en estos momentos procedes a ejecutar la aplicacin se mostrar el formulario de la siguiente manera:
Y si seleccionas el tem Diseo Grfico se visualizar los cursos con sus respectivos costos en los JList del lado izquierdo del diseo del formulario. Salte de la ejecucin y continuemos con la programacin.
Pgina 60
Selecciona
el
objeto
lstCurOfer
ubcate
en
el
evento
ValueChaged
perteneciente a ListSelection y ste a su vez pertenece a Events. Recuerda que esto se hace seleccionando al objeto lstCurOfer y dando clic botn derecho del mouse se muestra un men flotante. En el evento mencionado programa lo siguiente:
Se declara una variable entera llamada ndice, esta variable recibe el valor del ndice del tem seleccionado gracias al mtodo getSelectedIndex(). Lo que se quiere es seleccionar el tem de la caja de lista de lstCostos que tenga el mismo ndice que lstCurOfer, para ello se usa el mtodo setSelectedIndex(indice) para dar el mismo ndice a la caja de lista lstCostos. Finalmente hacemos que el botn de comando Agregar se habilite con el mtodo setEnabled()
A continuacin escribe el siguiente cdigo en el botn de comando Agregar (slo escribe lo que seala la llave de color rojo):
Aqu declaramos dos variables de tipo String llamados curso y costo y las variables enteras total y i. En la variable curso se almacena el curso seleccionado en la lista lstCurOfer, el mtodo getSelectionValue() trae consigo el tem seleccionado pero lo trae como objeto y al poner (String) hacemos que se convierta en cadena de caracteres para que pueda ser asignada a la variable curso. De igual manera se hace con la variable costo. Para agregar un tem a una caja de lista se usa el mtodo addElement perteneciente al objeto variable modelo3 o modelo4. Finalmente inhabilitamos el botn de comando Agregar.
Pgina 61
Ahora programa en la caja de lista lstCurEsco en el evento ValueChanged cuando desees seleccionar un curso para luego eliminarlo (slo escribe lo que seala la llave de color rojo).
La idea es la misma que se aplic en la programacin sobre el evento ValueChanged del objeto lstCurOfer. La diferencia est en que esta vez se habilita el uso del botn de comando Eliminar. En el botn de comando eliminar colocas la siguiente programacin (slo escribe lo que seala la llave de color rojo):
En esta programacin se hace uso del mtodo remove() que elimina un tem de la lista a travs de la variable objeto modelo3 modelo4 dado el valor del ndice. Al final de la programacin comando Eliminar. se inhabilita el botn de
Ahora
procede en
a el
Pgina 62
Se declara la variable de memoria cuenta que almacena la cantidad de tems existentes en la caja de lista lstCurEsco a travs del uso del mtodo Size() aplicado a la variable modelo3. Tambin se declara una variable de memoria i de tipo entero y tres variables de tipo float para el clculo de la matrcula, el costo total y el pago mensual. A travs de una sentencia for se procede a obtener los valores de la caja de lista lstCos usando la variable modelo4 con el mtodo elementAt(), para que estos valores sean sumados ya acumulados en la variable de memoria ctotal. En la primera sentencia if se procede a averiguar si las cajas de listas lstCurEsco y LstCos tiene tems, si no tienen tems se visualiza un mensaje de error indicando la necesidad de seleccionar y agregar cursos y se procede a suspender la ejecucin del programa gracias a instruccin return (retornar). En los siguientes tres if se calcula el monto de la matrcula aplicando el porcentaje indicado en el enunciado de la aplicacin. En la siguiente sentencia if se evala si se seleccion una forma de pago y si no se logr hacerlo muestra un mensaje de error y suspende la ejecucin del programa. Luego con las siguientes sentencias if se evala la forma de pago y se procede hacer los clculos respectivos. Finalmente se los resultados en las variables de memoria de tipo float se envan a los objetos JTextField par ser visualizados en el formulario. La programacin en los botones de comando Borrar y Cerrar es de la misma forma como se aplic en los temas o sesiones anteriores. Cuando procedas a ejecutar tu aplicacin se debe visualizar el formulario y una vez interactuado se mostrarn los resultados.
Pgina 63
La clase AbstractTableModel es la que implementa directamente a la interface TableModel, aunque es esta clase la que se recomienda extender para utilizarla como modelo de tabla, existe un modelo de tabla predeterminado que facilita mucho el trabajo con tablas. Este modelo predeterminado es la clase DefaultTableModel. Propiedad ms usada: Model: Permite definir el nmero de columnas y filas del objeto como tambin las expresiones que irn en las columnas. Mtodos ms usados:
addColumn(): Aade la columna al final de la matriz de columnas. setModel(): Asigna el modelo de datos al objeto JTable. GetRowCount(): Devuelve el nmero de filas en la tabla.
Pgina 64
DefaultTableModel
Esta clase permite construir el modelo para el objeto Table. Los mtodos ms utilizados son:
addColumn(): Aade una columna al modelo. AddRow(): Aade una fila al final del modelo. getColumnCount(): Devuelve el nmero de columnas en esta tabla de datos. getRowCount(): Devuelve el nmero de filas en esta tabla de datos. getValueAt(): Devuelve un valor de atributo para la celda en la posicin row, column. insertRow(): Inserta una fila en el modelo. RemoveRow(): Elimina del modelo segn la posicin de la fila indicada.
Aplicacin Construir una aplicacin que permita calcular el promedio de las notas obtenidas en el curso de Programacin Visual. La aplicacin debe permitir el ingreso del nombre del alumno, la nota de la I Unidad, la nota de la II Unidad y la nota de la III Unidad. Adems debe permitir la seleccin del turno a la que pertenece el alumno. A travs de un botn de comando debe agregar los datos en un objeto Jtable, calculando el promedio de las notas; y a travs de otro botn de comando debe eliminar la fila seleccionada en el objeto JTable. Tambin se debe mostrar el total de filas agregadas en el objeto JTable. Solucin: Usaremos el mismo proyecto utilizado en la sesin anterior y slo agregars un formulario (Jframe). Inmediatamente muestra ventana: la se siguiente
Pgina 65
A continuacin se muestra el entorno de desarrollo de NetBeans y no olvides de dar clic en el botn derecho del mouse sobre el formulario y establece AbsoluteLayout en Set Layout.
Procedemos a colocar un objeto Jlabel con la expresin CALIFICACIONES DEL CURSO DE PROGRAMACION VISUAL. Debajo de ste ttulo ubicar un objeto Jlabel con la expresin ALUMNO: acompaado de un cuadro de texto (JTextField) . A continuacin, colocar otro Jlabel con la expresin Nota de la I
Pgina 66
Unidad acompaado de un cuadro de texto y de igual manera hacerlo para la segunda y tercera unidad. Luego agregamos un objeto JCombobox para seleccionar el turno.
Seleccionamos el objeto JComboBox y elegimos en la ventana de propiedades, la propiedad model que permite colocar los tems dentro de la caja de lista desplegadle. Elegimos el botn de comando referido a la propiedad model se muestra la siguiente ventana:
Ingresamos <Seleccionar>,Maana, Tarde y Noche y luego hacemos click en el botn de comando OK. Continuamos con el diseo del formulario agregando un botn de comando Agregar y un botn de comando Eliminar. Luego procedemos a agregar el objeto JTable.
Pgina 67
Al ser dibujado el objeto JTable se observa en el panel de la izquierda que se vincula a un objeto JScrollPane. El objeto Jtable tiene como propiedad principal a model.
Luego de seleccionar el botn de comando referido a la propiedad model se muestra la siguiente ventana:
Pgina 68
Observamos en la ventana anterior que por defecto la y 4 el objeto Table de 4 la propone columnas conformacin filas,
dando
posibilidad de aumentar o disminuir el nmero de columnas y filas. Adems podemos establecer los ttulos de cada columna. Aqu debemos hacer hincapi que las columnas y las filas son tipo Object esto quiere decir que un objeto JTable es una matriz de objetos Nosotros (arreglo vamos a bidimensional). establecer el
nmero de columnas a travs de la programacin y las filas se crearn en la medida que se necesiten. Los nombres de los objetos de control dibujados en el formulario queda de la siguiente manera:
Pgina 69
Vamos a proceder a programar. Comenzamos con hacer uso del paquete swing y especficamente a las clases JoptionPane y a la clase JTable.
Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la clase DefaultTableModel es posible gracias al import javax.swing.table.*;
Declaramos
creamos
una
variable
de
memoria
dtm
del
tipo
DefaultTableModel.
En el mtodo constructor programamos lo siguiente (slo escribe lo que se seala la llave de color rojo):
Declaramos y creamos una variable de memoria titulos del tipo cadena y es un arreglo. Esta variable titulos se inicializa con los valores Alumno, I Unidad, II Unidad, III Unidad, Promedio y Turno, que sern los ttulos de las columnas del objeto JTable. Luego, con el mtodo setColumnIdentifiers() se define las columnas con sus respectivos ttulos en la variable dtm (modelo del JTable llamado Tabla). Finalmente, se vincula el modelo, representado en la variable dtm, al objeto JTable llamado Tabla.
Si en estos momentos decidimos ejecutar nuestra aplicacin, quedara nuestro formulario as:
Pgina 70
Formulario Observamos que el objeto JTable muestra las columnas definas en la programacin hecha en el mtodo constructor. Procedamos con la programacin del botn de comando Agregar (slo escribe lo que se seala la llave de color rojo).
Pgina 71
Declaramos y creamos una variable de memoria datos de tipo String y de tamao 6. Luego, declaramos las variables de memoria n1, n2, n3 y total de tipo entero, la variable promedio de tipo double y una variable de memoria verifica de tipo booleano. Las variables de memoria n1, n2 y n3 reciben los valores ingresado en los cuadros de textos txtn1, txtn2 y txtn3 respectivamente. Con la variable de memoria verifica se pretende evaluar si se lleg a escribir en los cuadros de textos y se haya seleccionado un turno. Con la sentencia IF evaluamos la variable verifica y con el operador ! hacemos negacin, es decir, si la variable verifica es falso entonces con ! se convierte en verdadero. Si la variable verifica es falso significa que se ingres los datos en los cuadros de textos y se seleccion el turno, entonces procedemos a calcular el promedio teniendo presente que las variables n1,n2, n3 siendo enteras deben ser tratadas como reales (double). Posteriormente, hacemos uso del arreglo datos asignando los datos ingresados y el turno seleccionado en cada uno de los elementos. Con el mtodo addRow() logramos crear una fila con los valores contenidos con el vector o arreglo datos. Luego, limpiamos los cuadros de textos y hacemos que el objeto JComboBox quede en <Seleccionar> al dar el valor cero al mtodo setSelectedIndex(). Si la variable verifica es verdadero significa que falta ingresar algn dato o seleccionar el turno. Finalmente, se muestra la cantidad de filas agregadas en el cuadro de texto txtTotal y haciendo uso del mtodo setRowCount() perteneciente a dtm.
Pgina 72
Declaramos las variables fila y total de tipo entero. La variable fila se le asigna el valor de la posicin de la fila seleccionada en el objeto Jtable llamado Tabla. Con la sentencia IF se evala a la variable fila si es mayor o igual a cero procedemos a remover o borrar la fila previamente seleccionad, caso contrario se muestra un mensaje indicando que se debe seleccionar una fila en la Tabla. Finalmente, se muestra la cantidad de filas agregadas en el cuadro de texto txtTotal y haciendo uso del mtodo setRowCount() perteneciente a dtm.
Pgina 73