UNIVERSIDAD NACIONAL DEL SANTA FACULTAD DE INGENIERIA E.A.P INGENIERIA DE SISTEMAS E INFORMATICA MANUAL DE PROGRAMACION VISUAL CON JAVA PARTE - 2 Ing. Mirko Manrique Ronceros Primera Edición INDICE Uso del Objeto JFrame 03 Objetos Contenedores Jpanel y JScrollPanel 17 Objeto Jpanel 17 Objeto JSCrollPanel 19 Objetos Contenedores JTabbedPanel y JDesktoPanel 33 Objeto JTabberPanel 33 Objeto JDesktopPanel 34 Objetos Menús JMenúBar y JMenúItem 53 Objeto JMenúBar 53 Objeto JMenúItem 53 Objetos Menús JRadioButtonMenúItem, JSeparador y Jmenú 62 Objeto JRadioButtonMenúItem 63 Objeto JSeparador 63 Objeto JMenú 63 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java USO DEL OBJETO JFRAME Objeto de Control JFrame Hasta el momento hemos hablado muy poco o casi nada del objeto Jframe, es decir, acerca del formulario. Es un objeto contenedor por excelencia debido a que es una interfase que facilita hacer los procesos que necesita el usuario de la aplicación. En este objeto podemos situar todos los demás componentes que necesitemos para el desarrollo de la interfase de nuestra aplicación. En la figura anterior muestra la jerarquía de herencia de este componente desde Object, que es el padre de todas las clases de Java. Los métodos estarán repartidos a lo largo de toda la jerarquía. Así por ejemplo, resulta intuitivo que debiera haber un método para cambiar el color de fondo del formulario, pero él no tiene ningún método para ello, lo tiene Componet. Propiedades más usadas: • Title: Permite definir el título del formulario, es decir, la etiqueta de la la barra de título. Ing. Mirko Manrique Ronceros Página 3 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática • Programación Visual con Java Font: Se establece el tipo de letra y el tamaño que servirá de base a cualquier expresión que se coloque con cualquier objeto de control dentro del formulario. • Enabled: Permite habiltar o inhabilitar el uso del objeto. Métodos más usados: • setTitle(): Añade el títutlo en el formulario. • setSize(): Establece el tamaño del formulario. • setLocation(): Establece la ubicación del formulario dentro de la pantalla. • setVisible(): Establece la visibilidad del objeto. Usa valores booleanos. • setIconImage(): Establece el ícono que se colocará al lado izquierdo del título del formulario. • show(): Permite cargar un formulario a la maemoria para ser vista por el usuario. • Hide(): Permite ocultar al formulario. Ing. Mirko Manrique Ronceros Página 4 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Aplicación Construye una aplicación que permite ingresar el nombre del postulante, la cantidad de preguntas bien contestadas y la cantidad de preguntas mal contestadas. La suma entre las preguntas bien y mal contestadas no debe superar a 100. Por cada pregunta bien contestada vale 4.08 puntos y por cada pregunta mal contestada vale -1.04 puntos. Se agregarán los datos antes mencionados en objetos JList y se debe obtener el postulante de mayor puntaje o el pustulante de menor puntaje en un segundo formulario. Usar los atributos y métodos de la clase Jframe. Solución: 1. Procedemos a crear un proyecto denominado Práctica, la misma que contendrá al paquete práctica. A partir de éste paquete vamos a crear un formulario con el objeto Jframe, seleccionando dicho paquete y al dar click con el botón derecho del mouse se muestra un menú flotante. Seleccionemos Formulario JFrame. 2. A continuación, colocaremos como nombre al formulario frmPostulante. Luego dar click en el botón de comando Finish (en caso de que la versión de NetBeans es en castellano entonces dar click en el botón de comando Terminar). Ing. Mirko Manrique Ronceros Página 5 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar click en el botón derecho del mouse sobre el formulario y establece AbsoluteLayout en SetLayout. Ing. Mirko Manrique Ronceros Página 6 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 4. Procedemos a colocar los objetos de control, tal como lo apreciamos en el siguiente diseño de formulario. 5. Procedemos a quitar los ítems de cada uno de las cajas de listas. 6. Los objetos de control en el diseño del formaulario tienen los siguientes nombres: Ing. Mirko Manrique Ronceros Página 7 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 7. Ahora bien, si observamos en el diseño del formulario, los cuatro objetos JList no tienen ítems. Los objetos JList referidos a Postulante, Buenas, Malas y Puntaje, se llenarán de ítems al momento de usar el botón de comando Agregar. Siendo cutro JList entonces necesitamos cuatro modelos del tipo DefaultListModel, uno para cada Jlist, para lo cual debemos incluir en el código de la programación el paquete swing con la siguiente instrucción: Ahora procedemos a escribir la definición de las variables del tipo DefaultListModel en la clase frmPostulante. Ing. Mirko Manrique Ronceros Página 8 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 8. Una vez definido las 4 variables de memoria del tipo DefaultListModel, en el método constructor se debe indicar que la variable modelo1 es para la caja de lista lstPost, la variable modelo2 para la caja de lista lstBuenas, la variable modelo3 para la caja de lista lstMalas y la variable modelo4 para la caja de lista lstPuntaje. Antes haremos uso del método setTitle() para definir el título del formulario en la barra de título cuya expresión es “Postulantes al Examen de Admisión”. También hacemos que los botones de comando Agregar y Eliminar se inhabilite su uso desde la ejecución de la aplicación. Los cuadros de textos txtPost, txtBien y txtMal deben inhabilitarse su uso en el momento de la ejecución. Haremos uso de los métodos del objeto JFrame llamdados setSize() y setLocation() para darle el tamaño apropiado al formulario y ubicación dentro de la pantalla. El operador this hace referencia al formulario frmPostulante. Sólo escribe lo que señala la llave de color rojo. 9. Procedemos a definir cuatro atributos o propiedades para la clase frmPostulante. Las líneas de código programación lo puedes escribir después de las líneas de código que definieron a las cuatro variables de tipo DefaultListModel. Ing. Mirko Manrique Ronceros Página 9 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Los atributos mayor y menor es para almacenar el mayor y menor puntaje de los postulantes ingresados en los objetos JList y los atributos postMay y postMen es para almacenar el nombre del postulante de mayor puntaje y el nombre del postulante de menor puntaje. 10. Debajo de la definición de los atributos, vamos a construir los métodos que nos permitan dar y obtener el valor a cada uno de los atributos. Comenzaremos por los mayor atributos y menor definiendo los siguientes métodos: Ing. Mirko Manrique Ronceros Página 10 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java El método setMayor() tiene un parámetro llamado m de tipo double y con el operador void significa que no tiene el método valor de retorno. Este método sirvirá almacenar en el atributo mayor el valor del parámetro m. En cambio el método getMayor() no tiene parámetro pero su valor de retorno es double, es decir, que éste método arroja o se puede obtener el valor almacenado en el atributo mayor. Lo mismo sucede para los métodos setMenor() y getMenor(). Vamos a proceder a crear los métodos para los atributos postMay y postMen. 11. Vamos a proceder a programar en el botón de comando Nuevo. Ing. Mirko Manrique Ronceros Página 11 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 12. Ahora programemos en el botón de comando Agregar. Procedemos a declarar las variables buenas y malas como enteras y puntaje como real (double). Las variables de memoria enteras reciben los valores ingresados en los cuadros de textos txtBien y txtMal y la variable puntaje se almacena el resultado según el valor de las preguntas bien y mal contestadas. Con la sentencia IF evalúa que la cantidad de preguntas contestadas no superen a 100. Si no supera a 100 procedemos agregar en las cajas de listas a través de las variables de tipo DefaultListModel. 13. Programemos en el objeto JList denominado lstPost en el evento ValueChanged. En esta programación se busca que al momento de seleccionar a un postulante en la caja de lista lstPost, se seleccione inmediatamente la cantidad de preguntas bien contestadas, la cantidad de preguntas mal contestadas y el puntaje en las demás cajas de listas. Se finaliza habilitando el uso del botón de comando Eliminar. Ing. Mirko Manrique Ronceros Página 12 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 14. Programación Visual con Java Programemos en el botón de comando Eliminar en el evento Eliminamos lo seleccionado con el método remove perteneciente a los modelos de cada caja de lista. 15. Es hora de crear el segundo formulario. Para ello seleccionamos el paquete práctica y en la opción New (nuevo) elegimos Formulario JFrame. A éste formulario se llamará frmConsulta, siendo el diseño el siguiente: 16. Es necesario que los objetos JRadioButton pertenezcan a un ButtonGroup. Ing. Mirko Manrique Ronceros Página 13 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 17. Programación Visual con Java Procedemos a colocar los nombres a los objetos de control. 18. El formulario frmConsulta será activado al momento de dar click en el botón de comando btnConsultar del primer formulario frmPostulante. Volvamos al primer formulario y programemos en el botón Consultar. Ing. Mirko Manrique Ronceros Página 14 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java La programación se inicia con la declaración de variables de tipo entero, real y cadena de caracteres. En la variable cuenta se almacena la totalidad de ítems existentes en la caja de lista lstPuntaje a través de la variable modelo4. Si la variable cuenta es mayor o igual a 1 entonces se procede con una sentencia for a buscar el mayor puntaje y la posición (índice) dentro de la caja de lista correspondiente al mayor puntaje. Luego con el método setMayor() se asigna el valor de la variable may al atributo mayor perteneciente a la clase frmPostulante. La misma idea se hace con el método setMenor() y con las variables pmay y pmen se almacenan los nombres de los postulantes que obtuvieron el mayor y menor puntaje respectivamente. Luego se asignan a los atributos postMay y postMen, a través de los métodos setPostMay() y setPostMen(), los valores que se encuentra en pmay y pmen. A continuación, se declara y se instancia la variable form2 de tipo frmConsulta, es decir, se crea una variable form2 que tiene los mismos atributos y métodos del formulario frmConsulta. Posteriormente con los métodos getMayor(), getMenor(), getPostMay() y getPostMen() se pasan los valores a los atributos a la variable objeto form2. Luego con el método show() hacemos que el segundo formulario se muestre. 19. Volvamos al segundo formulario y comenzamos a programar. Definamos los atributos y la programación en el método constructor. Los atributos definidos al inicio de la clase frmConsulta nos permitirá recibir los valores o datos del primer formulario. La programación agregada en el método constructor define el título del formulario con la expresión “Consulta del Mayor y Menor Puntaje”, se establece el tamaño del formulario frmConsulta y finalmente la localización dentro de la pantalla. Ing. Mirko Manrique Ronceros Página 15 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 20. Programación Visual con Java Programemos en el botón de comando Ver lo siguiente: Mandamos al cuadro de texto el valor contenido en el atributo postMay siempre y cuando esté seleccionado el JRadioButton referido al postulante de mayor puntaje, de lo contario se muetra el contenido del atributo postMen referido al postulante de menor puntaje. Ing. Mirko Manrique Ronceros Página 16 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java OBJETOS CONTENEDORES JPANEL Y JSCROLLPANEL Swing Containers Los objetos pertenecientes a Swing Containers, son objetos que permiten agrupar a otros objetos y facilitan el manejo de ciertos procesos dentro de una aplicación. En el entorno de NetBeans la paleta de los Swing Containers muestra lo siguiente: En el presente tema vamos a hacer uso de los objetos Jpanel y JScrollPanel. Objeto Contenedor JPanel Este componente lo que nos permite es Agrupar Otros Componentes dentro de él (algo así como el Frame en Visual.net o el GroupBox de Power Builder). Para empezar creamos un proyecto, una vez hecho este paso, vamos al panel del lado derecho donde se encuentran los elementos Swing Containers y seleccionamos el componente Panel (Jpanel), lo seleccionamos y soltamos en el Formulario. Ing. Mirko Manrique Ronceros Página 17 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Después de hacer esto soltamos y si hacemos click en otro lado del área del formulario nótese que pareciera que el Panel no estuviera pero si esta pase el mouse por donde colocó el Panel y ahí lo ubicará, pero no se alarmen si está. Bien para no tener estos problemas vamos a darle un borde a nuestro JPanel, En la ventana de propiedades como se muestra en la imagen seleccionamos a la propiedad Border. Nos mostrará la siguiente imagen Ing. Mirko Manrique Ronceros Página 18 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Bien tendremos esto: Propiedad más usada: • Border: Se establece el borde y el título si fuese necesario. Método más usado: • setEnabled(): Para habilitar o inhabilitar el uso del objeto. Objeto Contenedor JScrollPanel Un objeto ScrollPanel permite ubicar dentro de ella uno o varios objetos que comúnmente son objetos de control. Cuando se sobrepasa el espacio del objeto JScrollPanel, éste muestra las barras de desplazamiento vertical y/o horizontal. Por ejemplo, agregamos el JScrollPanel y dentro del mismo agregamos un JPanel para poder utilizar los componentes libremente; no olvidarse de la propiedad Aboslute Layout que nos permite colocar en cualquier posición otro componente dentro del Jpanel. Haremos que cuando cargue el formulario cargue un texto dentro de un Frame Ing. Mirko Manrique Ronceros Página 19 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Si colocamos el siguiente código en el botón de comando Mostrar: private void BtnMostrarActionPerformed(java.awt.event.ActionEvent evt) { lblTexto.setText(“Observa que el código de ejemplo selecciona el tamaño preferido del contenedor del panel desplazable. Una alternativa sería seleccionar el tamaño preferido del propio panel desplazable. De cualquier modo, se está limitando el tamaño del panel desplazable. Esto es necesario porque el tamaño preferido de un panel desplazable es ser tan grande como pueda”); } Para el botón de comando Limpiar colocamos: private void btnLimpiar ActionPerformed(java.awt.event.ActionEvent evt) { lblTexto.setText(“”); } Al ser ejecutado se debe mostrar el formulario como sigue. Ing. Mirko Manrique Ronceros Página 20 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Aplicación Construye una aplicación que permita ingresar el título de una película, seleccionar su categoría que puede ser Comedia, acción, Dibujos animados o Drama. Además se debe ingresar la duración en minutos de la película y el nombre del actor principal. Una vez ingresado los datos se procede a agregar en un objeto JTable generando una fila de datos y mostrando en un cuadro de texto el número de películas ingresadas. Solución: 1. Creamos un proyecto denominado Ejercicios. Luego dar click en el botón de comando Finish (Terminar si el entorno de NetBeans es en castellano). 2. Estando en el entorno de NetBeans, seleccionamos el paquete ejercicios y dando click botón derecho del mouse se muestra un menú flotante, donde seleccionamos Formulario Jframe. Ing. Mirko Manrique Ronceros Página 21 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 3. A continuación, colocaremos como nombre de formulario frmPeliculas. Luego dar click en el botón de comando Finish (en caso de que la versión de NetBeans es en castellano entonces dar click en el botón de comando Terminar). 4. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar click en el botón derecho del mouse sobre el formulario y establece AbsoluteLayout en SetLayout. Ing. Mirko Manrique Ronceros Página 22 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 5. Procedemos a colocar un objeto de control Jlabel con la expresión “PELICULA:” y al lado derecho un cuadro de texto JTextField. 6. Colocamos un objeto contenedor JPanel por debajo de la expresión “PELICULA:”. 7. Procedemos a utilizar la ventana de propiedades del objeto Jpanel. No vamos a usar la ficha de propiedades que se encuentra derecho del formulario, seleccionamos al lado diseño del sino al que objeto JPanel y luego al dar click botón derecho seleccionamos del Mouse, la opción propiedades. Ing. Mirko Manrique Ronceros Página 23 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 8. Seleccionamos la propiedad Border y damos click en el botón de comando correspondiente a ésta propiedad. 9. A continuación, seleccionamos como borde disponible a TitledBorder. 10. En título colocamos “Categorías de Películas”. Ing. Mirko Manrique Ronceros Página 24 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 11. Programación Visual con Java Ahora procedemos a definir el borde (propiedad que se encuentra encima de Título). 12. Posteriormente, seleccionamos el tipo de Borde EtchedBorder. Ing. Mirko Manrique Ronceros Página 25 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 13. Programación Visual con Java Luego de dar click en el botón de comando OK, queda definido el Borde y el título. 14. Volvemos a dar click en el botón de comando OK y regresamos a la ventana de propiedades del JPanel. Cerrar ésta ventana usando el botón de comando Close (Cerrar). Ing. Mirko Manrique Ronceros Página 26 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 15. El diseño del formulario queda así: 16. Ahora debemos hacer algo muy importante, que es establecer como AbsoluteLayout al objeto JPanel para que permita colocar los objetos de control con facilidad. 17. Colocamos cuatro objetos de tipo JRadioButton dentro del objeto Panel, quedando el diseño del formulario así: Ing. Mirko Manrique Ronceros Página 27 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 18. No olvidemos de crear un objeto ButtonGroup e indicar para cada objeto JRadioButton en su propiedad ButtonGroup que pertenecen a ButtonGroup1. 19. Seguimos agregando los objetos de control según observamos en el diseño del formulario. Esta vez vas a agregar un objeto JScrollPanel para colocar dentro de ella a un objeto JTable. Ing. Mirko Manrique Ronceros Página 28 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 20. Programación Visual con Java A continuación colocamos un objeto JTable. Los nombres de los objetos de control son tal como se aprecia en el siguiente diseño de formulario. 21. Vamos a proceder a programar. Comenzamos con hacer uso del paquete swing y específicamente a las clases JOptionPane y a la clase JTable. 22. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a través de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la clase DefaultTableModel es posible gracias al import javax.swing.table.*; Ing. Mirko Manrique Ronceros Página 29 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Declaramos y creamos una Programación Visual con Java variable de memoria dtm del tipo DefaultTableModel. 23. En el método constructor programamos lo siguiente (sólo escribe lo que se señala 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 “Título de la Película”, ”Categoría”, “Duración(min)” y “Actor Principal”, que serán los títulos de las columnas del objeto JTable. Luego, con el método setColumnIdentifiers() se define las columnas con sus respectivos títulos en la variable dtm (modelo del JTable llamado Tabla). Se vincula el modelo, representado en la variable dtm, al objeto JTable llamado Tabla. Inhabilitamos los objetos indicados en la programación y damos el enfoque al botón de comando Nuevo. 24. Procedemos a programar en el botón de comando Nuevo (sólo escribe lo que se señala la llave de color rojo). Ing. Mirko Manrique Ronceros Página 30 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 25. Programación Visual con Java Procedemos a programar en el botón de comando Agregar (sólo escribe lo que se señala la llave de color rojo). Declaramos una variable de memoria llamada datos de tipo String y de tamaño 4. También declaramos una variable entera llamada total. En el primer elemento del arreglo datos (datos[0]) se asigna el valor ingresado en el cuadro de texto txtPel (el título de la película). A continuación, se hace uso de sentencias selectivas IF para evaluar cuál de los objetos JRadioButton ha sido seleccionado y según el objeto seleccionado se asigna la categoría al segundo elemento del arreglo datos (datos[1]). En el tercer elemento (datos[2]) y cuarto elemento (datos[3]) del arreglo datos se asignan la duración y el actor principal respectivamente. Con el método addRow(), agregamos una fila en el objeto Table con los datos contenidos en el arreglo datos. Finalmente, en la variable total se asigna la cantidad de filas de datos que tiene el objeto JTable haciendo uso del método getRowCount() de la variable objeto dtm. Este último valor conseguido es visualizado en el cuadro de texto txtTotal a través del método setText(). 26. Luego, procedemos a programar en el botón de comando Eliminar (sólo escribe lo que se señala la llave de color rojo). Ing. Mirko Manrique Ronceros Página 31 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Declaramos las variables fila y total de tipo entero. La variable fila se le asigna el valor de la posición de la fila seleccionada en el objeto Jtable llamado Tabla. Con la sentencia IF se evalúa a la variable fila si es mayor o igual a cero procedemos a remover o borrar la fila previamente seleccionada, 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 método setRowCount() perteneciente a dtm. 27. Finalmente, programamos en el botón de comando Cerrar. 28. Procedemos a ejecutar el formulario. Ing. Mirko Manrique Ronceros Página 32 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java OBJETOS CONTENEDORES JTABBEDPANEL Y JDESKTOPPANEL Objeto Contenedor JTabbedPanel Este componente esta compuesto por un conjunto de paneles que puede almacenar un contenido en un espacio compacto. Sitio donde ocultamos o revelamos el contenido almacenado en los paneles con pestañas haciendo click en la pestaña del panel que se desea acceder. Por ejemplo, para empezar creamos un proyecto, una vez hecho este paso, vamos al panel del lado derecho donde se encuentran los elementos Swing Containers y seleccionamos el componente Panel (JPanel) Lo seleccionamos y soltamos en el Formulario. Para usar el JTabbedPanel debemos de insertarle un Panel dentro de el mismo ya que si no lo hacemos, cualquier controles que agreguemos se maximizará apoderándose de Tab1 y cada control que agreguemos será un nuevo Tab. Procedemos entonces a agregarle el panel a nuestro JTabbed para poder utilizarlo correctamente. Ing. Mirko Manrique Ronceros Página 33 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java No nos olvidemos de ponerle al JPanel su propiedad Aboslute Layout para poder utilizar los controles libremente dentro de él. Propiedad más usada: • Border: Se establece el borde y el título si fuese necesario. Método más usado: • setEnabled(): Para habilitar o inhabilitar el uso del objeto. Objeto Contenedor JDesktopPanel Este objeto es utilizado más para mejorar el diseño de los formularios. Es un interfaz más agradable para diseñar las aplicaciones. Ing. Mirko Manrique Ronceros Página 34 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Como observamos los objetos de control se dibujan encima del objeto JDesktopPanel, que por defecto es de un fondo de color azul. Propiedad más usada: • Background: Para definir el color del objeto JDesktopPanel. Aplicación Construye una aplicación que permita ingresar los apellidos, los nombres, el teléfono, seleccionar el grado de instrucción y el sexo de un alumno. Estos datos se manejarán en una pestaña del objeto JTabbedPanel. En una segunda pestaña se debe seleccionar el curso que el alumno quiere matricularse y la forma de pago. A través de un botón de comando MATRICULAR se llevará los datos a un objeto JTable que se encuentra en una tercera pestaña. En la pestaña donde se encuentra el objeto JTable se mostrará la suma de los precios de todos los cursos que el alumno quiere matricularse. Habrá la posibilidad de quitar o eliminar un curso que el alumno desista llevarlo. Solución: 1. Creamos un proyecto denominado AplicaContenedores. estando NetBeans, en el Luego entorno de seleccionamos el paquete aplicacontenedores y dando click botón derecho del mouse, se muestra un menú flotante, donde seleccionamos Formulario JFrame. Ing. Mirko Manrique Ronceros Página 35 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 2. A continuación, colocaremos como nombre de formulario frmMatricula. Luego dar click en el botón de comando Finish (en caso de que la versión de NetBeans es en castellano entonces dar click en el botón de comando Terminar). 3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar click en el botón derecho del mouse sobre el formulario y establece AbsoluteLayout en SetLayout. Ing. Mirko Manrique Ronceros Página 36 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 4. Procedemos a colocar un objeto de control JLabel con la expresión “MATRICULA DE CURSOS DE EXTENSION”. Debajo de ésta expresión colocaremos un objeto JTabbedPanel. Una vez seleccionado el objeto JTabbedPanel de la paleta y lo ubicamos en el formulario, antes de dar click para que quede dibujado, tiene la siguiente apariencia: Al dar click se reduce el tamaño del objeto JTabbedPanel. Debemos agrandar dicho objeto hasta que quede así: 5. Estando seleccionado el objeto JTabbedPanel, dar click botón derecho del mouse, seleccionamos la opción Agregar desde Paleta, luego Swing y elegimos Jpanel. Ing. Mirko Manrique Ronceros Página 37 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Una vez seleccionado Jpanel se creará una pestaña Tab1 en el objeto JTabbedPanel. 6. Procedemos a colocar AbsoluteLayout en la opción Set Layout cuando usemos el botón derecho del mouse sobre el Tab1. Ing. Mirko Manrique Ronceros Página 38 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 7. A continuación, colocaremos un objeto JdesktopPanel encima del Tab1. Una vez seleccionado el objeto JDesktopPanel de la paleta y lo ubicamos dentro del Tab1, antes de dar click para que quede dibujado, tiene la siguiente apariencia: Al dar click se reduce el tamaño del objeto JDesktopPanel. Ing. Mirko Manrique Ronceros Página 39 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Debemos agrandar dicho objeto hasta que quede así: 8. Comenzamos a colocar objetos de control de tipo JLabel, JtextField jComboBox. El y objeto JComboBox contendrá como grado de instrucción a “<Seleccionar”,”Secundaria” y “Superior.” También colocaremos un objeto JPanel para el sexo del alumno donde se establecerá el título y el borde. Ing. Mirko Manrique Ronceros Página 40 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Este objeto JPanel (Jpanel2) referido a sexo se debe establecer en la propiedad background, el color que debe ser parecido al color del JDesktopPanel. 9. Una vez establecido el color del JPanel2, procedemos a establecer para éste objeto JPanel2 el AbsoluteLayout en Set Layout. Ing. Mirko Manrique Ronceros Página 41 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 10. El objeto JPanel2 esta referido al dato sexo, en cambio el objeto JPanel1 está referido al Tab1. Como debemos colocar un título a la pestaña Tab1 demos hacer uso de la vista de propiedades del JPanel1. Puedes seleccionar del panel Navegador (que se encuentra a la izquierda del diseño del formulario) y al dar click botón derecho del mouse se muestra un menú flotante y seleccionas propiedades. Vamos a colocar como título de la pestaña “Datos del alumno”. 11. Va mos a proceder a crear otro Tab. Debemos nuevamente seleccionar el objeto JTabbedPanel, dar click botón derecho del mouse, seleccionamos la opción Agregar desde Paleta, luego Swing y elegimos Jpanel. Una vez seleccionado Jpanel se creará una pestaña Tab2 en el objeto JTabbedPanel. Ing. Mirko Manrique Ronceros Página 42 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 12. Procedemos a colocar AbsoluteLayout en la opción Set Layout cuando usemos el botón derecho del mouse sobre el Tab2. Ing. Mirko Manrique Ronceros Página 43 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 13. Programación Visual con Java Colocamos un objeto JDesktopPanel en el Tab2 tal como lo hicimos en anteriormente. Luego sobre el objeto JDesktopPanel al dar click botón derecho del mouse, en el menú flotante seleccionamos propiedades. Ing. Mirko Manrique Ronceros Página 44 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Se establece otro color al objeto JDesktopPanel. 14. Una vez establecido el color para el objeto JDesktopPanel, procedemos a colocar los objetos de control para el Tab2. Se utilizará un ComboBox para los cursos que contendrá los nombres siguientes: 15. Utilizaremos un objeto JPanel para la forma de pago (al contado o al pago de dos cutotas), que una vez dibujado y establecido el borde y el título, debemos indicar que su Set Layout es AbsoluteLayout. Ing. Mirko Manrique Ronceros Página 45 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 16. Seleccionamos al objeto JPanel3 que pertenece al Tab2 y definimos el título de la pestaña tal como se hizo con Tab. Esta vez el título será “Curso a Matricularse”. Creamos un Tab3 de la forma cómo se hizo, también colocamos un objeto JDesktopPanel, a éste último le cambiamos el propiedad color en background posteriormente colocamos la y los objetos de control. Se usará un objeto JTable para visualizar los cursos matriculados del alumno. Vamos a colocar los nombres a cada uno de los objetos de control para cada Tab del objeto JTabbedPanel. Ing. Mirko Manrique Ronceros Página 46 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 17. Programación Visual con Java Vamos a proceder a programar. Comenzaremos con hacer uso del paquete swing y específicamente a las clases JOptionPane y JTable. Ing. Mirko Manrique Ronceros Página 47 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java 18. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a través de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la clase DefaultTableModel es posible gracias al import javax.swing.table.*; Declaramos y creamos una variable de memoria dtm del tipo DefaultTableModel. 19. En el método constructor programamos lo siguiente (sólo escribe lo que señala 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 “Curso Matriculado”, “Duración”, “Costo”, “Forma de Pago” y “Precio”, que serán los títulos de las columnas del objeto JTable. Luego, con el método setColumnIdentifiers() se define las columnas con sus respectivos títulos en la variable dtm (modelo del JTable llamado Tabla). Se vincula el modelo, representado en la variable dtm, al objeto JTable llamado Tabla. 20. Procedemos a programar en el botón de comando Nuevo (sólo escribe lo que se señala la llave de color rojo). Ing. Mirko Manrique Ronceros Página 48 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Declaramos como variables de memoria i y total de tipo entero. Limpiamos los cuadros de textos y para los objetos JComboBox damos como ítem predeterminado a <Seleccionar> (índice activo igual a cero). En la variable total se cuenta el número de filas del objeto JTable a través de la variable dtm. Con la sentencia If evaluamos si es mayor a cero y procedemos con la sentencia for a eliminar fila por fila con el método remove(). 21. Luego, procedemos a programar en el botón de comando MATRICULAR que se encuentra en el Tab2 (Curso a Matricularse). Declaramos una variable de memoria llamada datos de tipo String y de tamaño 5. También declaramos las variables total, costo e i como enteros y precio como numérico real. La variable costo se almacena el contenido del cuadro de texto txtCosto. En el primer elemento del arreglo datos (datos[0]) se asigna el valor seleccionado del objeto cboCurso. En el segundo elemento del arreglo datos (datos[1]) se almacena el contenido del cuadro de texto txtDura y en el tercer elemento (datos[2]) el contenido del cuadro de texto txtCosto. En el cuarto elemento se almacena el valor “Contado” si la forma de pago es al contado y en el quinto elemento el costo descontado en 5%. Si la forma de Ing. Mirko Manrique Ronceros Página 49 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java pago es a pagar a cuotas entonces el cuarto elemento se asigna el valor “Pago de 2 cuotas” y al quinto elemento se asigna el resultado del costo incrementado en un 10%. Con el método addRow(), agregamos una fila en el objeto JTable con los datos contenidos en el arreglo datos. En la variable total se asigna la cantidad de filas de datos que tiene el objeto JTable haciendo uso del método getRowCount() de la variable objeto dtm. Con la sentencia for buscamos la suma de los precios en la variable precio. Finalmente asignamos el valor calculado en precio al cuadro de texto txtPTotal e inicializamos los objetos de control para la posibilidad de seleccionar otro curso. Ing. Mirko Manrique Ronceros Página 50 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática 22. También debemos programar Programación Visual con Java en el objeto cboCurso en el evento ActionPerformed (sólo escribe lo que se señala la llave de color rojo). Pretendemos al momento de seleccionar un curso se muestre la duración del curso y el costo en los cuadros de textos txtDura y txtCosto respectivamente. 23. Procedemos a programar en el botón de comando QUITAR que se encuentra en el Tab3 (sólo escribe lo que se señala la llave de color rojo). Declaramos las variables i, fila y total de tipo entero. La variable fila se le asigna el valor de la posición de la fila seleccionada en el objeto Jtable llamado Tabla. Con la sentencia IF se evalúa a la variable fila si es mayor o igual a cero Ing. Mirko Manrique Ronceros Página 51 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java procedemos a remover o borrar la fila previamente seleccionada y calculamos la suma de los precios de todos los cursos mostrándolo en el cuadro de texto txtPTotal, caso contrario se muestra un mensaje indicando que se debe seleccionar una fila en la Tabla. 24. Finalmente, programamos en el botón de comando Cerrar. 25. Procedemos a ejecutar el formulario. Ing. Mirko Manrique Ronceros Página 52 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java OBJETOS MENUS JMENUBAR Y JMENUITEM Swing Menus Aquí podemos ver el árbol de herencia de las clases relacionadas con los menús: Como se ve en la figura, los ítems de menús (incluidos los propios menús) son simples botones. Podríamos preguntarnos como un menú, si es sólo un botón, muestra sus ítems. La respuesta es que cuando se activa un menú, automáticamente trae un menú desplegable que muestra sus ítems. Crear y congifurar Barras de Menú Métodos: • JMenuBar(): Crea una barra de Menú. • setJMenuBar(): Selecciona la barra de menú de un Frame interno. • getJMenuBar(): Obtiene la barra de menú de un Frame interno Crear y rellenar Menús Métodos: • Jmenu(): Crea un Menú a partir de una opción de la barra. • add(JMenuItem): Crea un ítem de menú al final del menú. Ing. Mirko Manrique Ronceros Página 53 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática • Programación Visual con Java insert(): Inserta un ítem de menú o un separador de menú, en la posición especificada. • Remove():Elimina el ítem o ítems especificados del menú. Si el argumento es un esntero, especifica la posición del ítem a eliminar. Adición del Menú Ubicar el cursor en la etiqueta [JFrame], hacer clic en el botón derecho del ratón. Se desplegará el siguiente menú flotante: Seleccionamos Add Form Palette (en la versión en castellano debe decir Agregar desde paleta), luego la opción Swing y finalmente JMenuBar. La interfaz que ese está desarrollando adopta la siguiente apariencia: Ing. Mirko Manrique Ronceros Página 54 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java En el panel de Inspector (Navegador) debe quedar así: Cambiamos el nombre de de jManuBar1 por jMenuBar_principal y jMenu1 por jMenu_archivos. Para esto ubicamos el cursor en la etiqueta respectiva, se hace click botón derecho del mouse y en el menú flotante desplegado seleccionamos Change Variable Name. El aspecto del panel Inspector (Navegador) debe ser ahora el siguiente: Ing. Mirko Manrique Ronceros Página 55 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Cambiemos ahora el nombre que se despliega en la barra del menú (Menu). Ubicamos el cursor en la etiqueta el árbol de Inspector sobre jMenu_archivos. Hacer click botón derecho del mouse; en el menú flotante desplegado, seleccionamos Properties (en castellano propiedades). Cambiamos en el cuadro desplegado en la propiedad text, Menu por Archivos. La interfaz gráfica adopta la siguiente forma: Procedemos a Agregar Ítems al menú Archivos. Ubicamos el cursor en el árbol de Inpector sobre jMenu_archivos. Hacer click botón derecho del mouse. En el menú flotante desplegado seleccionemos Add > JMenuItem. Ing. Mirko Manrique Ronceros Página 56 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java El panel inspector (navegador) toma la siguiente forma: Ing. Mirko Manrique Ronceros Página 57 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Cambiemos el nombre de jMenuItem1 por jMenuItem_abrir. Si procedemos a compilar y ejecutar la aplicación, vemos que al dar click sobre el menú Archivos, se observará lo siguiente: Cambiemos la cadena “Item” desplegada por la cadena “Abrir”. Ubiquemos el cursor en el árbol JMenuItem_abrir; desplegado de en Inspector el menú seleccionemos sobre flotante Properties (propiedades) y cambiemos en el nuevo cuadro desplegado en la propiedad text, Item por Abrir. Al compilar y ejecutar la aplicación y dando click sobre el menú Archivos, se observará lo siguiente: Ing. Mirko Manrique Ronceros Página 58 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Repetir el procedimiento antes explicado para agregar los ítems: “Guardar” e “Imprimir”. Las respectivas variables en el árbol o panel de Inspector (Navegador) lo cambiamos el nombre por: jMenuItem_guardar y jMenuItem_imprimir. Nuevamente compilamos y ejecutamos la aplicación. El formulario se muestra de la siguiente manera: El panel lnspector debe tener ahora el siguiente aspecto: Vamos a adicionar más menús a la barra de menús. En el árbol de Inspector ubicamos el cursor sobre jMenuBar y hacer click botón derecho del mouse. En el menú flotante desplegado escoger Add JMenu. El aspecto de Inspector es el siguiente: Ing. Mirko Manrique Ronceros Página 59 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java El aspecto del diseño del formulario queda así: Ahora procedamos con el diseño del menú dentro del diseño del formulario. Al momento de que lo ejecutemos debe quedar el diseño del formulario de la siguiente forma: Ing. Mirko Manrique Ronceros Página 60 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Y que el panel Inspector tenga el siguiente aspecto: Ing. Mirko Manrique Ronceros Página 61 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java OBJETOS MENUS JRADIOBUTTONMENUITEM, JSEPARATOR y JMENU Menus desplegables Una barra de menú contiene uno o más menús, y tiene una posición dependiente de la plataforma -- normalmente debajo de la parte superior de la ventana. Un menú desplegable es un menú que es invisible hasta que el usuario hace una acción del ratón específica de la plataforma, como pulsar el botón derecho del ratón sobre un componente. Entonces el menú desplegable aparece bajo el cursor. Crear y congifurar Barras de Menú Métodos: • JMenuBar(): Crea una barra de Menú. • setJMenuBar(): Selecciona la barra de menú de un Frame interno. • getJMenuBar(): Obtiene la barra de menú de un Frame interno Crear y rellenar Menús Métodos: • Jmenu(): Crea un Menú a partir de una opción de la barra. • add(JMenuItem): Crea un ítem de menú al final del menú. • insert(): Inserta un ítem de menú o un separador de menú, en la posición especificada. • Remove():Elimina el ítem o ítems especificados del menú. Si el argumento es un esntero, especifica la posición del ítem a eliminar. • AddSeparator(): Añade un separador al final del menú desplegable. Implementar Items de Menú Métodos: • JMenuItem(): Crea un ítem en un menú normal. • JCheckBoxMenuItem: Crea un ítem de menú que se parece y actúa como un checkbox. • JRadioButtonMenuItem: Crea un ítem de menú que se parece y actúa como un radio buttom. Se puede hacer uso de un ícono. Ing. Mirko Manrique Ronceros Página 62 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática • Programación Visual con Java setEnabled(): Si el argumento es true, activa el ítem de menú, si es false lo desactiva. Uso de la clase RadioButton Los Botones de Radio son grupos de botones en los que, por convención, sólo uno de ellos puede estar seleccionado. Swing soporta botones de radio con las clases JRadioButton y ButtonGroup. Para poner un botón de radio en un menú, se utiliza la clase JRadioButtonMenuItem. Los botones de radio tienen un aspecto similar a los checkboxes, pero, por convención, los checkboxes no tienen límites sobre cuantos ítems pueden estar seleccionados a la vez. Como JRadioButton desciende de AbstractButton, los botones de radio Swing tienen todas las caracterísitcas de los botones normales. Aquí podemos ver una imagen de una aplicación que utiliza cinco botones de radio para elegir qué tipo de mascota mostrar: Uso de la clase CheckBox La versión Swing soporta botones checkbox con la clase JCheckBox, Swing también soporta checkboxes en menús, utilizando la clase JCheckBoxMenuItem. Como JCheckBox y JCheckBoxMenuItem descienden de AbstractButton, los checkboxes de Swing tienen todas las características de un botón normal Adicionar items dentro de los ítems En la sesión anterior (Tema 10), estuvimos desarrollando el diseño de un menú que quedó su panel de inspector de la siguiente manera: Ing. Mirko Manrique Ronceros Página 63 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Ahora vamos a construir un tercer menú algo más complejo. La aplicación una vez terminado deberá tener las siguientes formas: Ing. Mirko Manrique Ronceros Página 64 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Y el panel Inspector debe adoptar la siguiente forma: Ing. Mirko Manrique Ronceros Página 65 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Programación Visual con Java Para lograr esto es necesario adicionar dentro de los JMenu más JMenus. Sólo los últimos para adicionar en cada rama del árbol del panel Inspector serán los JMenuItem. Repetir el paso Anterior para que la aplicación una vez ejecutada adopte la siguiente forma: Y el panel Inspector se encuentre en el siguiente estado: Ing. Mirko Manrique Ronceros Página 66 Universidad Nacional del Santa Facultad de Ingeniería E.A.P. Sistemas e Informática Ing. Mirko Manrique Ronceros Programación Visual con Java Página 67