Seguidores

MIS WEBS



Mostrando entradas con la etiqueta ejercicios. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejercicios. Mostrar todas las entradas

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.

Buscar este blog

Sandisk y Western Digital