Vamos a continuar creando la calculadora, en anteriores ejercicios hemos empezado realizando un marco insertando una lámina con los números/operadores y otra lámina con el display donde aparecen los números y el resultado.
Ahora organizaremos los botones
mejor daremos un tamaño mayor a los números y funcionalidad para que pueda
realizar cálculos:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class otroEjemplodelayout {
public static void main (String[] asgs) {
Marco123456789
Calculator = new
Marco123456789();
Calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Calculator.setVisible(true);
}
}
class Marco123456789 extends JFrame{
public Marco123456789() {
setTitle("Practica de
Calculadora");
setBounds(300,100,350,400);
Consola
Calculadora = new
Consola();
add(Calculadora);
}
}
class Consola extends JPanel implements ActionListener{
public Consola(){
setLayout(new BorderLayout());
resetea=true;
cuadro_texto =new
JTextField ("0",10);
cuadro_texto.setBackground(Color.WHITE);
cuadro_texto.setFont(new Font("Arial Black",Font.BOLD,35));
//cuadro_texto.setLayout(new
BorderLayout());
add(cuadro_texto,BorderLayout.NORTH);
Panel =new JPanel();
Panel.setLayout(new GridLayout(4,4,3,3));
//creamos un array con
los botones
JButton
Botones_Calculo[] = {
new JButton("7"),new
JButton("8"),new
JButton("9"),new
JButton("*"),
new JButton("4"),new
JButton("5"),new
JButton("6"),new
JButton("-"),
new JButton("1"),new
JButton("2"),new
JButton("3"),new
JButton("+"),
new JButton("."),new
JButton("0"),new
JButton("/"),new
JButton("=")
};
//utilizamos un for
each para cargar los botones en la lamina
int n=0;
for (JButton i:Botones_Calculo) {
Botones_Calculo[n].setFont(new Font("Arial Black",Font.BOLD,30));
Botones_Calculo[15].setBackground(Color.CYAN);
Panel.add(Botones_Calculo[n]);
Botones_Calculo[n].addActionListener(this);
n++;
}
add(Panel,BorderLayout.CENTER);
}
//declaramos las variables fuera de la
case para utilizarlas en ActionListener
private JPanel Panel;
private
JTextField cuadro_texto;
private boolean resetea;
private double num1,num2,resultado;
String operador;
public void actionPerformed(ActionEvent e) {
String
entrada = e.getActionCommand();
if(resetea) {
//si resetea ==true limpia
pantalla
cuadro_texto.setText("");
resetea=false;
}
if (entrada !="+" && entrada !="-" && entrada !="/" && entrada !="*" && entrada !="=") {
cuadro_texto.setText(cuadro_texto.getText()+entrada);
}
if (entrada =="+" || entrada =="-" || entrada =="/" || entrada =="*" ) {
num1= Double.parseDouble(cuadro_texto.getText());
cuadro_texto.setText("0");
operador= entrada;
System.out.println(num1+ "
"+ operador);
resetea=true;
}
if(entrada=="=") {
num2= Double.parseDouble(cuadro_texto.getText());
resetea=true;
switch (operador) {
case
"-":
resultado= num1 - num2;
//String.VAlueOf combierte un
numero en String
cuadro_texto.setText( String.valueOf(resultado));
break;
case "/" :
resultado= num1 / num2;
cuadro_texto.setText( String.valueOf(resultado));
break;
case "+" :
resultado= num1 + num2;
cuadro_texto.setText( String.valueOf(resultado));
break;
case "*" :
resultado= num1 * num2;
cuadro_texto.setText( String.valueOf(resultado));
break;
}
}
}
}
Bueno pues es resultado será el siguiente:
Al introducir números desaparece el 0.
Introducimos el primer número tocando los botones y van apareciendo en el display.
Cuando tocamos un operador se pone en 0
Introducimos el segundo número
Cuando tocamos el igual realiza la operación marcada por el operador seleccionado
Más adelanta la haremos reaccionar a las teclas de números del teclado y añadiremos nuevos operados como raízes números cuadrados.. (Utilizando la clase Marth podemos añadir lo que deseemos).
Muchas gracias a todos/as, espero que os pueda ser útil.
No hay comentarios:
Publicar un comentario