JTagua

Inicio » Posts tagged 'TButton'

Tag Archives: TButton

Anuncios

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

Anuncios

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