Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de Windows y programación de interfaces

Programación de Windows y programación de interfaces

Importar Java. Borderlayout;

Importar Java. evento;

Importar Java. awt. evento. >

Importar javax.swing.jpanel;

Importar javax.swing.jtextfield;

/**

*Una calculadora similar a Windows. funciones e interfaz de la versión estándar de la calculadora que viene con el archivo adjunto. Sin embargo, aún no se admite la operación con teclado.

*/

La clase pública Calculator extiende JFrame para implementar ActionListener {

/* *Muestra los nombres de los botones en la calculadora*/

cadena final privada[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",

" * "," ", " 1 ", " 2 ", " 3 ", " 6- ", " 1/x ", " 0 ", " /-", ", " ", "=" };

/* *Mostrar el nombre de la tecla de función en la calculadora*/

private final String[]COMMAND = { " back space ", " ce ", " C " };

/* *Muestra el nombre de M en el lado izquierdo de la calculadora*/

Cadena final privada[] M = { " ", " MC ", " MR ", " MS ", " M " };

/* *Teclas en la calculadora*/

teclas JButton privadas[]= nuevo JButton[longitud de teclas];

/* *Botones para teclas de función en la calculadora*/

Comandos privados de JButton[]= nuevo JButton[longitud del comando];

/* *Botón M en la calculadora. lado izquierdo de la calculadora*/

JButton privado m[]= nuevo JButton[m ];

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

private JTextField result text = new JTextField(" 0 ");

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

private. boolean firstDigit =. true

//Resultado intermedio del cálculo.

número de resultado doble privado = 0.0

//Operador para la operación actual

Operador de cadena privada = " = "

// ¿Es legal la operación?

operateValidFlag booleano privado = true;

/**

*Constructor

*/

Calculadora pública (){

super();

//Inicializar la calculadora

init();

//Configurar el cálculo El color de fondo del dispositivo.

This.setBackground(Color.Light_Gray);

This.setTitle("Calculator");

//Visualización de coordenadas en pantalla (500, 300 ) calculadora.

this.setLocation(500, 300);

//No modifiques el tamaño de la calculadora.

this . setresizable(false);

//Haga que los componentes en la calculadora tengan el tamaño apropiado.

este .pack();

}

/**

*Inicializa la calculadora

* //p>

Private void init() {

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

texto del resultado. alineación sehorizontal(JTextField.right);

//No se permite modificar el cuadro de texto del resultado.

texto del resultado. set editable(false);

//Establece el color de fondo del cuadro de texto en blanco.

resultText.setBackground(Color. White);

//Inicializa los botones de las teclas de la calculadora y coloca las teclas en la mesa de trabajo.

JPanel calckeysPanel = new JPanel();

// Diseño de cuadrícula, cuadrícula de 4 filas y 5 columnas, el intervalo horizontal es de 3 píxeles y el intervalo vertical es de 3 píxeles.

diseño calckeyspanel.set(new GridLayout(4, 5, 3, 3));

for(int I = 0; IltKEYS.lengthi) {

TECLAS[I]= nuevo JButton(TECLAS[I]);

calckeyspanel . add(teclas[I]);

Teclas[i]. set foreground(color . blue);

}

//Las teclas de operación están marcadas en rojo y otras teclas están marcadas en azul.

Botón [3]. establecer primer plano (color . rojo);

Botón [8]. establecer primer plano (color . rojo);

Clave[13]. establecer primer plano (color . rojo);

Clave[18]. establecer primer plano (color . rojo);

Clave[19]. set foreground(color . red);

//Inicializa las teclas de función, todas marcadas en rojo. Coloque las teclas de función en la mesa de trabajo.

Panel de comandos de JPanel = new JPanel();

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

panel de comandos. establecer diseño(new GridLayout(1, 3, 3, 3));

for(int I = 0; i lt command. length; i) {

comandos[I]= nuevo JButton(COMANDO[I]);

panel de comandos . add(comandos[I]);

Comando[i]. set foreground(color . red);

}

//Inicializa la tecla M, márcala con rojo y coloca la tecla M en el tablero de dibujo.

JPanel calmsPanel = new JPanel();

//Utilice el administrador de diseño de cuadrícula para crear una cuadrícula con 5 filas y 1 columna. El espacio horizontal entre cuadrículas es de 3 píxeles y el espacio vertical es de 3 píxeles.

calmspanel.set diseño(new GridLayout(5, 1, 3, 3));

for(int I = 0; i ltm. length; i) {

M[I]= nuevo JButton(M[I]);

calmspanel.add(m[I]);

m[i]. set foreground(color . red);

}

//Hagamos el diseño general de la calculadora y coloquemos los calckeys y el bloc de dibujo de comandos en el medio de la calculadora.

//Coloca el cuadro de texto al norte de la calculadora y el tablero de dibujo de la calma al oeste de la calculadora.

//Cree un nuevo tablero de dibujo grande y coloque el tablero de dibujo de comandos y calckeys creado anteriormente en el tablero de dibujo.

JPanel panel 1 = new JPanel();

//La mesa de trabajo utiliza un 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.

panel 1. establecer diseño(new BorderLayout(3, 3));

panel1.add("Norte ", panel de comando); add("Center ", calckeysPanel);

//Crea una mesa de trabajo para colocar el cuadro de texto.

JPanel top = new JPanel();

top .set layout(new BorderLayout());

top.add("Centro", texto del resultado). );

//Diseño general

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

getContentPane(). add("norte",arriba);

getContentPane(). add("Centro", panel 1);

getContentPane(). add("西", calmsPanel);

//Agrega un detector de eventos para cada botón.

//Ambos usan el mismo detector de eventos, que es este objeto. La declaración de esta clase implementa ActionListener.

for(int I = 0; i ltKEYS.lengthi) {

Clave[i]. addActionListener(this);

}

for(int I = 0; i lt comando. longitud; i) {

comando[i]. addActionListener(this);

}

for(int I = 0; i ltm . length; i) {

m[i]. addActionListener(this);

}

}

/**

*Manejo de accidentes

*/

Acción de anulación pública realizada (evento de acción e){

//Obtener la etiqueta del origen del evento

string label = e. /p >

if(label .quals(COMMAND[0]){

//El usuario presionó la tecla "retroceso".

manejar el espacio hacia atrás();

p>

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

//El usuario presionó la tecla "CE"

texto del resultado. settext( " 0 ");

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

//El usuario presionó la tecla "c".

handleC();

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

//El usuario presionó la tecla numérica o el punto decimal key

handleNumber(label);

// handlezero(zero);

} De lo contrario {

//El usuario presionó el clave de operador.

handleOperator(label);

}

}

/**

*Handle. la tecla de retroceso evento presionado

*/

Private void handleBackspace() {

texto de cadena = texto de resultado();

int I = text . length();

If (i gt0) {

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

text = text.substring(0, I-1);

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

//Si el texto no tiene contenido, inicializa el calculadora Varios valores.

resultado texto . settext(" 0 ");

primerDigit = true

operador = " =

} De lo contrario {

//Mostrar texto nuevo

resultText.setText(text);

}

}

}

/**

*Maneja el evento cuando se presiona la tecla numérica.

*

* @param key

*/

Número de identificador de vacío privado (clave de cadena){

if (firstDigit) {

//El primer número ingresado

texto del resultado . settext(key);

} else if ((key .equals(" ")) amp amp(resultText.getText().indexOf(" . ") lt0)) {

//Si se ingresa un punto decimal y no hay un punto decimal antes del punto decimal, el. El punto decimal se agregará después del cuadro de texto del resultado.

texto del resultado . settext(texto del resultado . gettext() ","

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

//Si no se ingresa ningún punto decimal, agregue el número al cuadro de texto del resultado.

result text . settext(result text . gettext() key);

}

// Definitivamente no es el primer número ingresado en el futuro.

firstDigit = false

}

/**

*Maneja el evento cuando se presiona la tecla C.

*/

Manija de vacío privado C() {

//Inicializa varios valores de la calculadora.

texto del resultado . settext(" 0 ");

primerDigit = true

operador = " =

}

/**

* Maneja el evento cuando se presiona la tecla de operación.

*

* @param key

*/

Operador de identificador de vacío privado (clave de cadena){

if(operator .quals(“/”){

//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

operateValidFlag = false

ResultText.setText("El divisor no puede ser zero") ;

}else {

resultado num/= getNumberFromText();

}

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

//Operación recíproca

if (resultNum == 0.0) {

//Operación ilegal

operateValidFlag = false

ResultText.setText("El cero no tiene recíproco");

} En caso contrario {

Número de resultados = 1 /Número de resultados;

}

} else if(operator .quals(" "){

//Operación de suma

resultado num = getNumberFromText() ;

} else if(operator .quals("-"){

//Operación de resta

resultado num-= getNumberFromText() ;

} else if(operator .quals(" * "){

//Operación de multiplicación

resultado num * = getNumberFromText();

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

//Operación de raíz cuadrada

resultado num = math . sqrt(resultado num);

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

//Operación porcentual, dividida por 100

Número de resultados = número de resultados/100;

} else if(operator .quals(" /-"){

//Operaciones con números positivos y negativos

resultado num = resultado num *(1);

} else if(operator .quals(" = "){

//Operación de asignación

resultado num = getNumberFromText();

}

if (operateValidFlag) {

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

Long t 1

Double; T2;

t 1 =(largo)resultado num;

T2 = resultado num-t 1;

if (t2 == 0) {

texto del resultado . settext(cadena . valor de(t 1));

}

De lo contrario {

texto del resultado . settext(string . value of(resultNum));

}

}

//Operador equivalente al botón presionado por el usuario.

operador = clave

primerDigit = verdadero

operateValidFlag = verdadero

}

/**

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

*

* @return

*/

doble privado getNumberFromText (){

Resultado doble = 0;

Pruebe {

resultado = valor doble de (texto del resultado. gettext()). valor doble();

} catch(NumberFormatException e){

}

Devolver resultado;

}

Public static void main(String args[]) {

Calculadora calculadora1 = nueva calculadora();

calculadora 1. set visible(true);

calculadora 1. setdefaultcloseoperation(JFrame.EXIT_ON_CLOSE);

}

}