JTagua

Inicio » Posts tagged 'Java'

Tag Archives: Java

Anuncios

Swing 12: JComboBox.

Veamos ahora el comportamiento básico del componente JComboBox. Este componente permite seleccionar un elemento de una lista. El ejercicio consiste en presentar un JFrame, que a su vez contiene un panel y éste contiene:

  • Una etiqueta (JLabel) con el texto “Seleccione una Opción:”
  • Una caja combinada (JComboBox) con dos opciones (Hombre, Mujer), que se introducen a través de la propiedad Model.
  • Una etiqueta (JLabel) que contiene inicialmente un icono que se corresponde con un chico.

El ejercicio consiste en capturar la acción del cambio/selección del elemento de la lista de la caja realizado por el usuario. Para comprobar la selección del elemento de la lista asignaremos a la segunda etiqueta un icono de un chico o una chica según se seleccione Hombre o Mujer respectivamente.

Es decir:

(más…)

Anuncios

Swing 11: JMenuBar, JMenu, JMenuItem.

Vamos a ver ahora una ventana principal JFrame (ventana principal) que contiene un Menu principal (JMenuBar) con varias opciones (Archivo, Editar, Ayuda y Salir), cada una de las cuales contiene otras opciones de menú (JMenuItem)  y una barra de progreso (JProgressBar). Colocaremos también un componente JTextArea.

La mejor manera de afrontar este diseño es crear desde NetBeans un proyecto nuevo siguiendo la plantilla correspondiente a “Proyecto Nuevo”, “Java” y “Java Desktop Aplication”. (Aplicación básica).

Si llamamos al proyecto “Apliejemplo” aparecerá un paquete con dicho nombre. Este paquete contiene tres componentes java: ApliEjemploAboutBox, ApliEjemploApp, ApliEjemploView.

(más…)

Swing 09: JDialog y JLabel.

Al final de la entrada 8 de este tutorial básico de componentes Java Swing indicaba que a pesar del funcionamiento correcto de la calculadora, quedaban cuestiones por resolver, y en concreto, quedaba por resolver algunos errores de operación no contemplados. Y así por ejemplo, si un usuario comienza una operación directamente pulsando un botón de operación, el programa se detenía pues no existía el operando 1 necesario.

Para resolver esto vamos a una nueva sesión del IDE de NetBeans abrimos la clase ventanappal, nos situamos en modo “Diseño” en el editor y añadimos un componente JDialog, desde la pestaña “Ventanas Swing” y “Cuadro de diálogo”. Finalmente:

Cambiamos el nombre del componente, haciendo click con el botón derecho y dentro del menú contextual seleccionando “Cambiar nombre de la variable” y le llamamos JDialogError, es decir:

Ahora añadimos una “etiqueta” desde la pestaña “Controles Swing”. Esta etiqueta tendrá un nombre de variable tal como JLabelError, y una propiedad text similar a “Tiene que introducir Primer Operando” . Como cabe esperar utilizamos para cambiar ambos parámetros el menú contextual.

Tendremos gráficamente

Ahora vamos a cambiar el código asociado a los cuatro botones de operación. Para ello en todos ellos hemos de escribir:

private void bSumarActionPerformed(java.awt.event.ActionEvent evt) {
if (!””.equals(String.valueOf(tfresultado.getText()))) {
operador1 = (Double.parseDouble(String.valueOf(tfresultado.getText())));
tfresultado.setText(“”);
sumarClick = 1;
decimalClick =0;
} else {
// Se hace visible el JDialog.
jDialogError.pack();
jDialogError.setVisible(true);
}
}

Tal como puede verse en el código anterior, si la cadena de texto asociado a tfresultado es distinta de vacía entonces de ejecuta el almacenamiento del operador, mientras que en el caso contrario se visualiza el objeto JDialogError. Habría que repetir “convenientemente” esta lógica en las cuatro operaciones básicas.

Swing 08: Evento actionPerformed de TButton. (Cont.)

Vamos a terminar con los códigos asociados a los eventos de los botones, para ello, primero, terminaremos el código asociado al botón bP (punto decimal).

Para ello, abrimos el código correspondiente al evento actionPerformed y escribimos

if (decimalClick ==0){
tfresultado.setText(tfresultado.getText()+bP.getText());
decimalClick =1;
}

Es decir, si aún no se ha introducido el punto decimal en el operando, y esto ocurre cuando decimalClick es cero, pues que lo introduzca. Tras introducirlo cambiamos el valor de la variable de control para impedir que vuelva a introducirse otro punto decimal.

Compruebe que funciona el botón tal como se requiere.

Veamos ahora el botón correspondiente al cambio de signo. Abra el evento actionPerformed de dicho botón y escriba el siguiente código:

masmenos =(Double.parseDouble(String.valueOf(tfresultado.getText())));
masmenos = masmenos *(-1);
tfresultado.setText(String.valueOf(masmenos));

En la primera de las instrucciones asignamos a la variable masmenos del tipo double, lo que resulte de convertir a double (esto se hace con Double.parseDouble), la cadena de texto que se encuentra en el objeto tfresultado.

En la segunda de las instrucciones cambiados de signo masmenos al multiplicar por -1

y en la tercera de las instrucciones  asignamos (setText) lo que resulte de convertir a cadena el campo masmenos.

Compruebe que funciona el botón tal como se requiere.

Veamos ahora el botón borrar

Abra la rutina correspondiente al evento actionPerformed del botón borrar bB e introduzca el siguiente código

tfresultado.setText(“”);
decimalClick=0;

Como vemos, en la primera instrucción estableces un valor vacío para el campo de texto tfresultado y además reiniciamos la variable de control del punto decimal, estableciéndola a un valor de cero.

Compruebe que funciona el botón tal como se requiere.

Veamos seguidamente el código asociado a los botones de las operaciones básicas:

Para el botón correspondiente a la operación de sumar, abrimos el evento actionPerformed y escribimos:

operador1 = (Double.parseDouble(String.valueOf(tfresultado.getText())));
tfresultado.setText(“”);
sumarClick = 1;
decimalClick =0;

Vemos que en la primera instrucción asignamos a la variable del tipo double el resultado de convertir a double la cadena correspondiente al texto que está presentando el objeto tfresultado.

Inmediatamente borramos el texto del objeto tfresultado, para que así pueda introducir otro operando el usuario.

Establecemos la variable de control correspondiente a la operación en 1, para indicar que el usuario desea “sumar”.

Establecemos la variable de control del punto decimal en cero para así permitirle usar el punto decimal en el nuevo operando.

Resyulta obvio que para el caso de la resta, multiplicación y división hemos de cambiar sumarClick = 1;, por restarClick = 1;, multiplicarClick = 1;y dividirClick = 1; respectivamente.

Si introducimos los cuatro códigos anteriores en los cuatro eventos y ejecutamos, comprobamos que el botón “=” o bIgual no genera ningún resultado todavía.

Veamos finalmente el código asociado al botón “=”. Como cabe esperar en modo “Diseño” hacemos doble click sobre el botón “=” o bIgual  y aparecerá la rutina del evento click de dicho botón. Escribiremos ahora el siguiente código:

operador2 = (Double.parseDouble(String.valueOf(tfresultado.getText())));
if (sumarClick > 0) {
resultado = operador1 + operador2;
tfresultado.setText(String.valueOf(resultado));
operador1 = 0;
operador2 = 0;
sumarClick = 0;
}
if (restarClick > 0) {
resultado = operador1 – operador2;
tfresultado.setText(String.valueOf(resultado));
operador1 = 0;
operador2 = 0;
restarClick = 0;
}
if (multiplicarClick > 0) {
resultado = operador1 * operador2;
tfresultado.setText(String.valueOf(resultado));
operador1 = 0;
operador2 = 0;
multiplicarClick = 0;
}
if (dividirClick > 0) {
resultado = operador1 / operador2;
tfresultado.setText(String.valueOf(resultado));
operador1 = 0;
operador2 = 0;
dividirClick = 0;
}

Asumo aquí que el código es lo suficientemente explicativo, por sencillo, como para que no necesite ninguna explicación.

Compruebe ahora el funcionamiento de la calculadora …

Este sería el funcionamiento básico de una calculadora diseñada en Java y con componente Swing, sin embargo, a pesar de que el funcionamiento básico es correcto, aún quedan algunas cuestiones por considerar.Téngase presente que el ejercicio elegido es muy simple para que pueda ser explicado con sencillez el funcionamiento de los componentes Java Swing.

Entre estas cuestiones se encuentran el poder controlar los errores de operación del usuario. Por ejemplo, ¿que ocurrirá si antes de introducir un primer operando se pulsa en uno de los botones de operación?.

El resultado es que se producirá una excepción (un error), sencillamente en el caso de que no exista un primer operando y se trate de sumar, la instrucción

operador1 = (Double.parseDouble(String.valueOf(tfresultado.getText())));

correspondiente al evento asociado al botón de multiplicación va a producir una excepción, sencillamente al estar vacío tfresultado.getText() la conversión a double no podrá realizarse, se producirá el error y el programa se detendrá…

Es obvio que para solventar esta cuestión habrá que comprobar antes de ejecutar lo procedente en el botón sumar, restar, multiplicar o dividir, el supuesto valor nulo de tfresultado.

Esta cuestión podría resolverse de forma sencilla con el código modificado siguiente:

if (!””.equals(String.valueOf(tfresultado.getText()))) {
operador1 = (Double.parseDouble(String.valueOf(tfresultado.getText())));
tfresultado.setText(“”);
sumarClick = 1;
decimalClick =0;
} else {
// Se hace visible el JDialog.
//jDialogError.getContentPane().add(new JLabel(“Error1”));
jDialogError.pack();
jDialogError.setVisible(true);
}

En este código para el evento correspondiente al botón “sumar”, comprobamos si la cadena del texto del objeto tfresultado es o no nula.

En el caso de que no sea nula se obtiene el primer operando, en caso contrario se trataría del error de tratar de sumar con un operando vacío, en ese caso mostramos un componente JDialog de Swing que muestra un error.

(Se anima al lector que termine el problema y resuelva algunos otros posibles errores de operación).

Swing 06: Evento actionPerformed de TButton.

Vamos a introducir un concepto nuevo, el concepto de evento, en esta nueva entrega del tutorial.

Una vez que tenemos planteada la interfaz, parece razonable que la mera pulsación o click de cada uno de los botones que se corresponden a los dígitos 0, 1,2 3, 4, 5, 6, 7, 8, 9 éstos tengan por objeto componer un operando que deberá aparecer en el campo de texto tfresultado.

Antes de proceder a cumplimentar este código, le sugiero que ejecute el proyecto y compruebe que en tiempo de ejecución, la pulsación de los botones de los dígitos no producen ningún resultado. Comprobado esto. Vamos al editor en modo “Diseño” y hacemos doble click en el botón cuyo texto es “0”. En este momento se nos abre una rutina

private void b0ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

El código del interior de esta rutina se ejecutará siempre que hagamos click en el botón. La acción mas natural de un botón es hacer click en él, este es unos de los eventos de un objeto o componente TButton.

¿Qué queremos hacer?.

(más…)

Swing 05: JTextField.

Continuando con nuestro proyecto, vamos a incluir en nuestra interfaz un componente Swing de la clase JTextField, este tipo de controles se utilizan para introducir o visualizar información, cualquiera que sea esta. Nosotros utilizaremos este control para mostrar los resultados de la calculadora.

Una vez abierto el proyecto y teniendo el editor en modo “Diseño” sobre el archivo ventanappal.java, hacemos click en “Campo de Texto.”, de la paleta de controles Swing. Luego hacemos click dentro del panel superior (en blanco) y que inicialmente llamamos PSuperior. Ajustamos el tamaño del control al panel y tendremos algo parecido a esto:

(más…)

Swing 04: JButton.

Siguiendo con nuestro proyecto (Calculadora), vamos a incorporar un grupo de componentes de Swing que pertenecen a la clase JButton, para ello, una vez abierto el proyecto, nos situamos en la paleta de controles de Swing, hacemos click en Botón y lo soltamos en el panel PBase de manera que tendremos lo siguiente

(más…)

Swing 03: JPanel.

Siguiendo con nuestro ejercicio, el proyecto que hemos denominado ejava0 y que sólo dispone de un componente JFrame, ahora vamos a añadir un componente JPanel. Para ello, una vez abierto el proyecto con el IDE NetBean, nos situamos en ventanappal.java seleccionamos la vista Diseño y veremos algo parecido a esto

(más…)

Swing 01: Introducción y main.

Para realizar los ejercicios de este tutorial, se prejuzga que tiene instalado tanto  JDK como NetBeans. La forma de descargar ambos productos está descrita (en windows y en Linux) en otras entradas de este blog.

En mi caso concreto, actualmente tengo instalada las últimas versiones obtenidas desde la página de descarga de NetBeans , donde he seleccionado el lenguaje Español y la tecnología “All”. (última columna).

(más…)

Descarga del JDBC Driver for MySQL (Connector/J) – Connector/J 5.1.12

Para poder utilizar desde Netbeans el gestor de base de datos MySQL a través de JDBC, es necesario configurar lo que se conoce como el Conector J para MYSQL, es decir, una librería proporcionada por Oracle para el manejo de las funciones de acceso a datos con duicho motor. En la página http://www.mysql.com/products/connector/ podemos encontrar la página de descarga

Si pulsamaos en “Download” veremos una nueva pantalla desde donde podemos seleccionar dos archivos:

mysql-connector-java-5.1.12.tar.gz (3.6 M) y mysql-connector-java-5.1.12.zip (3.8 M).

Si seleccionamos el segundo y rechazamos el registro solicitado, aparecerán una serie de servidores desde donde podemos el archivo mencionado. Nosotros seleccionamos el primero de ellos (Univ. of Technology / Vienna, Austria ), desde donde finalmente obtendremos el archivo comprimido.

Abrimos el archivo y descomprimimos dentro de la carpeta donde tenemos netbeans, con lo cual añadimos una carpeta denominada “mysql-connector-java-5.1.12”.

Dentro de esta carpeta, entre otros archivos, existe uno denominado “mysql-connector-java-5.1.12-bin.jar”, este archivo contiene la librería que tendrá que conocer el IDE de Netbeans para poder utilizar el acceso a MySQL.

Para hacer esto, tenemos que tener abierto un proyecto en el IDE de Netbeans. Véa la siguiente entrada en el blog denominada “Instalación del Conector J para MySQL en Netbeans”.