Seguidores

MIS WEBS



viernes, 23 de febrero de 2018

EJERCICIOS CON DISEÑOS MARCOS JAVA III


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

Buscar este blog

Sandisk y Western Digital