Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escribir una ventana de calculadora de números enteros en Java e implementar sus funciones

Cómo escribir una ventana de calculadora de números enteros en Java e implementar sus funciones

Le doy uno listo para usar, compílelo y ejecútelo directamente, aprovéchelo

import?java.awt.BorderLayout;

import?java .awt.Color;

importar?java.awt.GridLayout;

importar?java.awt.event.ActionEvent;

importar?java.awt. event.ActionListener;

importar?java.awt.event.ActionEvent;

p>

importar?javax.swing.JButton;

¿importar? javax.swing.JFrame;

import?javax.swing.JPanel;

import?javax.swing.JTextField;

/** *?Una calculadora con funciones e interfaz similares a la versión estándar de la calculadora que viene con los accesorios de Windows. ?Pero la operación del teclado aún no es compatible. */

public?class?JCalculator?extends?JFrame?implements?ActionListener?{

/**?¿El nombre para mostrar de la clave en la calculadora?*/

privado?final?Cadena[]?KEYS?=?{?"7",?"8",?"9",?"/",?"sqrt",?"4",?"5 " ,?"6",

"*",?"%",?"1",?"2",?"3",?"-",?"1/x", ? "0",?"+/-",?".",?"+",?"="?};

/**?El nombre para mostrar de la tecla de función en la calculadora. ?* /

privado?final?String[]?COMMAND?=?{?"Retroceso",?"CE",?"C"?};

/** ?Cálculo ¿El nombre para mostrar de la M en el lado izquierdo del dispositivo?*/

private?final?String[]?M?=?{?"?",?"MC",?" MR",?"MS", ?"M+"?};

/**?¿Botones clave de la calculadora?*/

private?JButton?keys[]?= ?new?JButton[KEYS. length];

/**?¿El botón de la tecla de función en la calculadora?*/

privado?JButton?commands[]?=? new?JButton[COMMAND.length] ;

/**?¿El botón M en el lado izquierdo de la calculadora?*/

private?JButton?m[]?=? new?JButton[M.length];

p>

/**?Cuadro de texto del resultado del cálculo?*/

private?JTextField?resultText?=?new?JTextField ("0");

///? Indica si el usuario presiona el primer número de la expresión completa o el primer número después del operador

private?boolean?firstDigit?=? true;

/ /?El resultado intermedio del cálculo.

private?double?resultNum?=?0.0;

//El operador de la operación actual

private?String?operator?=?"= " ;

//¿La operación es legal?

private?boolean?operateValidFlag?=?true;

/**

?* ?Constructor

?*/

public?JCalculator()?{

super();

///? Inicializar calculadora de cálculo

init();

//Establecer el color de fondo de la calculadora

this.setBackground(Color.LIGHT_GRAY);

this.setTitle("Calculator");

//Muestra la calculadora en las coordenadas de pantalla (500,?300)

this.setLocation(500,? 300) ;

//No modificar el tamaño de la calculadora

this.setResizable(false);

//Realizar los componentes en el calculadora del tamaño apropiado

this.pack();

}

/**

?*?Inicializar la calculadora

?*/

private?void?init()?{

///?El contenido del cuadro de texto está alineado a la derecha

resultText.setHorizontalAlignment(JTextField .RIGHT);

/// No se permite la modificación del cuadro de texto del resultado

resultText.setEditable(false);

//Establece el color de fondo del cuadro de texto en Blanco

resultText.setBackground(Color.white);

//Inicializa los botones de la calculadora y coloca las teclas en un tablero de dibujo

JPanel ?calckeysPanel?=?new?JPanel();

//Utilice el diseño de cuadrícula, una cuadrícula de 4 filas y 5 columnas, y el intervalo horizontal entre cuadrículas es de 3 píxeles el intervalo vertical es de 3 píxeles

calckeysPanel.setLayout(new?GridLayout(4,?5,?3,?3));

for?( int?i? =?0;?i?

teclas[i]?=?new?JButton(KEYS[i]);

calckeysPanel .add(keys[i]);

keys[i].setForeground(Color.blue);

}

///? Se utilizan teclas de operador marcadas en rojo, otras teclas se representan en azul

keys[3].setForeground(Color.red);

keys[8].setForeground(Color.red) );

teclas[13].setForeground(Color.red);

teclas[18].setForeground(Color.red);

teclas[19 ].setForeground(Color .red);

//Las teclas de función de inicialización están marcadas en rojo.

Colocar teclas de función en una mesa de trabajo

JPanel?commandsPanel?=?new?JPanel();

//Usar diseño de cuadrícula, cuadrícula de 1 fila y 3 columnas Cuadrícula, el intervalo horizontal entre cuadrículas es de 3 píxeles y el intervalo vertical es de 3 píxeles

commandsPanel.setLayout(new?GridLayout(1,?3,?3,?3) );

for? (int?i?=?0;?i?

comandos[i]?=?JButton(COMMAND[i]);

commandsPanel.add(commands[i]);

commands[i].setForeground(Color.red);

}

// ?Inicialice la tecla M, márquela en rojo y coloque la tecla M en un tablero de dibujo

JPanel?calmsPanel?=?new?JPanel();

// Usar el administrador de diseño de cuadrícula, una cuadrícula de 5 filas y 1 columna, el intervalo horizontal entre cuadrículas es de 3 píxeles y el intervalo vertical es de 3 píxeles

calmsPanel.setLayout(new?GridLayout(5,?1, ?3,?3));

for?(int?i?=?0;?i?

m[i ]?=?new?JButton(M[i]);

calmsPanel.add(m[i]);

m[i].setForeground(Color.red);

}

///? Realicemos el diseño general de la calculadora y coloquemos los calckeys y los tableros de dibujo de comandos en la calculadora en el medio,

/ /? Coloque el cuadro de texto en el norte y la mesa de trabajo tranquila en el oeste de la calculadora.

//Cree una nueva mesa de trabajo grande y coloque las mesas de trabajo de comandos y calckeys creadas anteriormente en la mesa de trabajo

JPanel?panel1?=?new?JPanel();

p>

//La mesa de trabajo utiliza el administrador de diseño de bordes y los intervalos horizontales y verticales entre los componentes de la mesa de trabajo son de 3 píxeles

panel1.setLayout(new?BorderLayout(3, ? 3));

panel1.add("Norte",?commandsPanel);

panel1.add("Oeste",?calckeysPanel);

/ /?Crea un tablero de dibujo para colocar el cuadro de texto

JPanel?top?=?new?JPanel();

top.setLayout(new?BorderLayout());

top.add("Centro",?resultText);

//?Diseño general

getContentPane().setLayout(new?BorderLayout(3,? 5));

getContentPane().add("Norte",?top);

getContentPane().add("Centro",?panel1);

getContentPane ().add("West",?calmsPanel);

//Agregar detectores de eventos para cada botón

//Utilizar el mismo detector de eventos. es este objeto.

La declaración de esta clase incluye implements?ActionListener

for?(int?i?=?0;?i?

claves[ i].addActionListener(this);

}

for?(int?i?=?0;?i?

comandos[i].addActionListener(this);

}

for?(int?i?=?0;?i?

m[i].addActionListener(this);

}

}

/**

?*?Manejar eventos

?*/

public?void?actionPerformed(ActionEvent?e)?{

//Get Etiqueta del origen del evento

String?label?=?e.getActionCommand();

if?(label.equals(COMMAND[0]))?{

///?El usuario presionó la tecla "Retroceso"

handleBackspace();

}?else?if?(label.equals(COMMAND[1]))? {

//El usuario presionó la tecla "CE"

resultText.setText("0");

}?else?if?(label .equals( COMMAND[2]))?{

///?El usuario presionó la tecla "C"

handleC();

}?else ?if?( "0123456789.".indexOf(label)?>=?0)?{

///?El usuario presionó la tecla numérica o la tecla del punto decimal

handleNumber (etiqueta);

//?handlezero(zero);

}?else?{

///?El usuario presionó la tecla del operador

handleOperator(label );

}

}

/**

?*?Maneja el evento cuando el Se presiona la tecla de retroceso

?*/

private?void?handleBackspace()?{

String?text?=?resultText.getText();

int? i?=?text.length();

if?(i?>?0)?{

//Retroceso, elimine el último carácter del texto

text?=?text.substring(0,?i?-?1);

if?(text.length()?==?0 )?{

//Si el texto no tiene contenido, inicializa los distintos valores de la calculadora

resultText.setText("0");

primerDigit?=?true;

p>

operador?=?"=";

}?else?{

/ /?Mostrar texto nuevo

resultado

tText.setText(texto);

}

}

}

/**

?* ?Manejar el evento cuando se presiona la tecla numérica

?*?

?*?@param?key

?*/

private?void?handleNumber(String?key)?{

if?(firstDigit)?{

///?El primer número ingresado

resultText . setText(clave);

}?else?if?((key.equals("."))?&&?(resultText.getText().indexOf(".")?

//Si la entrada es un punto decimal y no hay ningún punto decimal antes, el punto decimal se agregará al final del cuadro de texto del resultado

resultText.setText(resultText.getText() ?+?".");

}?else?if?(!key.equals("."))?{

///?Si la entrada no es un punto decimal, agregue el número al final del cuadro de texto del resultado

resultText.setText(resultText.getText()?+?key);

}

///? El siguiente número ingresado definitivamente no será el primer número

firstDigit?=?false;

}

/**

?* ?Manejar el evento cuando se presiona la tecla C

?*/

private?void?handleC() ?{

//Inicializar cada función del valor de la calculadora

resultText.setText("0");

firstDigit?=?true;

operador?=?"=";

}

/**

?*?Manejar el evento cuando se presiona la tecla del operador

?*?

?*?@param?key

?*/

private?void?handleOperator(String?key )?{

if?(operator.equals( "/"))?{

///?Operación de división

///?Si el valor en el cuadro de texto del resultado actual es igual a 0

if?(getNumberFromText ()?==?0.0)?{

//La operación es ilegal

operatorValidFlag?=?false;

resultText.setText("El divisor no puede ser cero");

}?else?{

resultNum?/ =?getNumberFromText();

}

}? else?if?(operator.equals("1/x"))?{

// ?Operación recíproca

if?(resultNum?==?0.0)?{

//La operación es ilegal

operaperValidFlag?=?false;

resultText.setText("Cero no tiene recíproco");

}?else?{

resultNum?=?1?/

?resultNum;

}

}?else?if?(operator.equals("+"))?{

///?Operación de adición

resultNum?+=?getNumberFromText();

}?else?if?(operator.equals("-"))?{

//Resta Operación

resultNum?-=?getNumberFromText();

}?else?if?(operator.equals("*"))?{

/ /?Operación de multiplicación

resultNum?*=?getNumberFromText();

}?else?if?(operator.equals("sqrt"))?{

///? Operación de raíz cuadrada

resultNum?=?Math.sqrt(resultNum);

}?else?if?(operator.equals("%"))? {

///?Operación de signo de porcentaje, dividida por 100

resultNum?=?resultNum?/?100;

}?else?if?(operador .equals("+/-"))?{

///? Operaciones con números positivos y negativos

resultNum?=?resultNum?*?(-1);

}?else?if?(operator.equals("="))?{

///?Operación de asignación

resultNum?=?getNumberFromText();< / p>

}

if?(operateValidFlag)?{

///?Operación de números de coma flotante de doble precisión

long?t1;

doble?t2;

t1?=?(long)?NumResultado;

t2?=?NumResultado?-?t1;

si ?(t2?==?0)?{

resultText.setText(String.valueOf(t1));

}?else?{

resultText .setText(String.valueOf(resultNum));

}

}

/// El operador es igual al botón presionado por el usuario

operador?=?clave;

primerDigit?=?true;

operarValidFlag?=?true;

}

/* *

?*?Obtener el número del cuadro de texto del resultado

?*?

?*?@return

?*/

privado?double?getNumberFromText()?{

double?result?=?0;

¿probar?{

resultado? =?Double.valueOf(resultText.getText()).doubleValue();

}?catch?(NumberFormatException?e)?{

}

regresar?resu

lt;

}

public?static?void?main(String?args[])?{

JCalculator?JCalculator1?=?new?JCalculator( );

JCalculator1.setVisible(true);

JCalculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}