Ir al contenido principal

MVC dando formato a los números con Number Format y Decimal Format



MVC dando formato a los números con Number Format y Decimal Format

Cuando se realizan operación con números en ocasiones el resultado tienen un número muy grande de decimales, lo que genera que su lectura sea difícil por ejemplo: 

10/3 = 3.333333333333333333333333333333333

Para este caso se puede utilizar las clases Number Format y Decimal Format, como se muestra en el siguiente ejemplo.


1.- Crear un nuevo proyecto donde con los siguientes packages y las siguientes clases:



2.- Crear una interfaz gráfica similar a la siguiente:



3.- Renombrar los componentes como se muestra en la siguiente imagen:



4.- Dentro de la clase modelo se crearan los métodos para dar formato a un número utilizando un objeto de tipo Number Format

private NumberFormat df = new DecimalFormat("#0.00"); //creación del objeto df

df.format(3.3333333333333333); //formateo de los numeros

Regresara el valor: 3.33

Código de la clase modelo

package model;

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class modelo {

    private double numero1=2.6;
    private double numero2=8.4;
    private NumberFormat df = new DecimalFormat("#0.00");

    public double getNumero1() {
        return numero1;
    }

    public void setNumero1(double numero1) {
        this.numero1 = numero1;
    }

    public double getNumero2() {
        return numero2;
    }

    public void setNumero2(double numero2) {
        this.numero2 = numero2;
    }
   
    public String suma()
    {
        return df.format(this.numero1+this.numero2);
    }
   
    public String resta()
    {
        return df.format(this.numero1-this.numero2);
    }
    public String multiplicacion()
    {
        return df.format(this.numero1*this.numero2);
    }
    public String division()
    {
        return df.format(this.numero1/this.numero2);
    }
}


5.- Clase Constructor

package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.modelo;
import view.vista;

public class controlador implements ActionListener {

    private vista objVista;
    private modelo objModelo;

    public controlador(vista objVista, modelo objModelo) {
        this.objVista = objVista;
        this.objModelo = objModelo;

        this.objVista.jb_suma.addActionListener(this);
        this.objVista.jb_resta.addActionListener(this);
        this.objVista.jb_multiplicacion.addActionListener(this);
        this.objVista.jb_division.addActionListener(this);
    }//controlador

    public void actionPerformed(ActionEvent componente) {
        if (componente.getSource() == this.objVista.jb_suma) {
            metodoSuma();
        } else if (componente.getSource() == this.objVista.jb_resta) {
            metodoResta();
        } else if (componente.getSource() == this.objVista.jb_multiplicacion) {
            metodoMultiplicacion();
        } else if (componente.getSource() == this.objVista.jb_division) {
            metodoDivision();
        }
    }

    public void iniciar_vista() {
        objVista.setTitle("Calculadora");
        objVista.setLocationRelativeTo(null);
        objVista.jtf_numero1.setText("" + objModelo.getNumero1());
        objVista.jtf_numero2.setText("" + objModelo.getNumero2());
    }//iniciar_vista

    private void metodoSuma() {
        objModelo.setNumero1(Double.parseDouble(objVista.jtf_numero1.getText()));
        objModelo.setNumero2(Double.parseDouble(objVista.jtf_numero2.getText()));
        objVista.jtf_resultado.setText("" + objModelo.suma());
    }

    private void metodoResta() {
        objModelo.setNumero1(Double.parseDouble(objVista.jtf_numero1.getText()));
        objModelo.setNumero2(Double.parseDouble(objVista.jtf_numero2.getText()));
        objVista.jtf_resultado.setText("" + objModelo.resta());
    }

    private void metodoMultiplicacion() {
        objModelo.setNumero1(Double.parseDouble(objVista.jtf_numero1.getText()));
        objModelo.setNumero2(Double.parseDouble(objVista.jtf_numero2.getText()));
        objVista.jtf_resultado.setText("" + objModelo.multiplicacion());
    }

    private void metodoDivision() {
        objModelo.setNumero1(Double.parseDouble(objVista.jtf_numero1.getText()));
        objModelo.setNumero2(Double.parseDouble(objVista.jtf_numero2.getText()));
        objVista.jtf_resultado.setText("" + objModelo.division());
    }
}


6.- Clase Main

package mvc_dos;

import controller.controlador;
import model.modelo;
import view.vista;

public class Main {
    public static void main(String sax[])
    {
        modelo objModelo = new modelo();
        vista objVista = new vista();
        controlador controlador = new controlador( objVista , objModelo );
        controlador.iniciar_vista();
        objVista.setVisible(true);
    }
}

7.-  Al ejecutar la aplicación el resultado de una división saldría limitado a dos decimales.


Comentarios

Entradas más populares de este blog

Creación de Librerías en Java

Creación de Librerías en Java   Las librerías son un conjunto de clases con funciones especificas que ayudan a desarrollar aplicaciones más complejas de una forma sencilla, por ejemplo si se requiere realizar cálculos matemáticos y emplear el funciones como el Seno o Coseno, simplemente se importa la librería Math y se utilizan estos métodos, en lugar de desarrollarlos. Java cuenta con una extensa lista de librerías disponibles dentro del JDK o desarrolladas por terceros, pero también existe la posibilidad de desarrollar librerías propias para reutilizar de forma más eficiente el código, por ejemplo si se trabaja de forma cotidiana con conexión a base de datos, se pueden desarrollar métodos genéricos que realicen la conexión, que validen las consultas, etc. de forma que su uso reduzca el tiempo de desarrollo e incremente la productividad. Para este tutorial se van a crear dos proyectos en NetBeans, uno sera la librería y el otro proyecto hará uso de esta.

Elegir la clase a ejecutar en NetBeans, MVC

Elegir la clase a ejecutar en NetBeans Para que java pueda ejecutar una aplicación esta debe tener un método conocido como punto de entrada, este método tiene la sintaxis: void static void main(String [] sax){ //código } En ocasiones en una aplicación tiene varios puntos de entrada, que pueden servir para probar diferentes partes de la aplicación sin tener que recorrer o pasar por varias clases, para esto se puede seleccionar directamente en las propiedades del proyecto que clase será la principal.

Librerías JOptionPane para generar ventanas de entrada y salida de datos

Para poder introducir datos leídos desde el teclado existen varias formas, una de ellas hace uso de la librería javax.swing.JOptionPane que entre otras opciones permite mostrar ventanas para introducir datos, y ventanas para mostrar valores. Con el uso de esta librería se crean pequeñas interfaces definidas por el sistema, pero ya se hace uso de las librerías graficas swing, que se verán más adelante.