Escriba una aplicación que simule una calculadora, usando un diseño de panel y cuadrícula, agregando un cuadro de texto, 10 botones numéricos (0~9), 4 botones de suma, resta, multiplicación y división, un botón de signo igual, un botón de borrar y un cuadrado. El botón raíz, un botón de retroceso, requiere que la fórmula de cálculo y los resultados se muestren en el cuadro de texto, y el efecto es como se muestra en la siguiente figura.
Código de calculadora simple Java:
importar javax.swing.*; importar javax.swing.JTextField; importar java.awt.*; importar java.awt.event.*; importar java.awt.Color; ActionListener { JPanel privado p1 = nuevo JPanel(); //Crear panel privado JPanel p2 = nuevo JPanel() privado JTextField; t1; //El cuadro de texto 1 se usa para mostrar la información de entrada private JTextField t2; //El cuadro de texto 2 se usa para mostrar la información del resultado private JLabel label; //Información de la etiqueta StringBuffer str //La cadena que se muestra en la pantalla double x ,y ; //x e y son ambos operandos int z; //Z representa en qué operador se hizo clic 0 representa "+", 1 representa "-", 2 representa "*", 3 representa "/" JButton privado b[. ] = nuevo JButton[12]; //Crea una matriz con 12 botones private JButton b1,b2,b3,b4,b5,b6,b7,b8; //Botón de función aritmética public Ex5_2() { super("Calculadora simple" ); /Nombre de la ventana Contenedor c = getContentPane(); //Crear objeto de panel de contenido t1 = new JTextField(30); t1.setEditable(false); //Solo se puede mostrar, no se puede editar t2 = new JTextField(30); t2.setEditable(false); //Solo se puede mostrar, no se puede editar label = new JLabel("Bienvenido a Calculadora de la edición Xiaowu ^_^o~ ¡Trabaja duro "); label.setForeground(Color.blue); //Crea un búfer de cadena vacío str=new StringBuffer(); p2.add(label); //Agregar una etiqueta al panel p2.add(t2); //Agregar un cuadro de texto al panel p2.add(t1); //Agregar un cuadro de texto al panel p2.setLayout(new GridLayout(4,1); )); //Poner El diseño del panel es de 4 filas y 1 columna for(int i=0;i<10;i++) //Establecer etiquetas para los botones 0~9 en la matriz y registrar los oyentes { String s=""+ yo;b[i]= nuevo JButton(s); b[i].addActionListener(this); } // Crea una instancia de cada botón b[10]= new JButton("-/+"); b[11]= new JButton("."); = nuevo JButton("/"); b2= nuevo JButton("Volver"); b3= nuevo JButton("*"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); b8= new JButton("="); //Establece el color de primer plano del botón ; i<12;i++) { b[i].setForeground(Color.azul } b1.setForeground(Color.rojo); b5.setForeground(Color.rojo); b7.setForeground(Color.rojo); b2.setForeground(Color.azul); b4.setForeground(Color.azul); .blue); //Agregar al panel p1.add(b[7]); p1.add(b[9]); p1.add(b1); p1.add(b[); 6]); p1.add(b3); p1.add(b4); p1.add(b[1]); p1.add(b5); p1.add(b6); p1.add(b[0]); p1.add(b[10]); ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //Registrar oyente b[10].addActionListener(this); b[11].addActionListener(este); b1.addActionListener(este); b5.addActionListener(este); b6.addActionListener(este); ) ); b7.addActionListener(este); b8.addActionListener(este); //Agregar el panel al panel de contenido c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); //Establecer el diseño secuencial setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana para cerrar Acción setVisible(true); //Establecer en visible setResizable(false); //Prohibir ajustar el tamaño del marco setSize(400,300); //El método principal implementa la creación de una ventana public static void main(String[] args) { Ex5_2 f = new Ex5_2() } //Procesamiento de eventos de botón public void actionPerformed(ActionEvent e) { try { if(e.getSource( )==b4) //Seleccione "C" para borrar { t1.setText("0"); //Borrar el cuadro de texto t1.setHorizontalAlignment(JTextField.RIGHT); //Alinear el texto a la derecha str.setLength(0); //Borrar el búfer de cadena para prepararse para recibir nuevos operandos de entrada} else if(e.getSource) ()==b[10])//Haga clic en "+/-" para seleccionar si el operando de entrada es un número positivo o negativo{ x=Double.parseDouble(t1.getText().trim());//La función de recorte es eliminar espacios en la cadena t1.setText(""+(-x)); t1.setHorizontalAlignment(JTextField.RIGHT) ; } else if (e.getSource()==b5)//Haga clic en el botón más para obtener el valor de x y z y borre el valor de y{ x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d } else if(e.getSource()==b7)//Haga clic para reducir; El botón obtiene el valor de x y z y borra el valor de y { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e.getSource()==b3)//Haga clic en el botón de multiplicación para obtener el valor de x y z y borre el valor de y{ x =Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d } más; if(e.getSource()==b1)//Haga clic en el botón de división para obtener el valor de x y z y borre el valor de y{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3; } else if(e.getSource()==b8)//Haga clic en el botón del signo igual para generar el resultado del cálculo { str.setLength(0); switch(z) { caso 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT); break caso 1: t1.setText(""+(xy)); setHorizontalAlignment(JTextField.RIGHT);ruptura caso 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT); romper; caso 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT) ;romper; } } más if(e.getSource()==b[11])//Haga clic en el botón "." para ingresar el decimal { if(t1.getText().trim().indexOf('.')!=-1) // Determinar si la cadena ya contiene un punto decimal { } else // Si no hay un punto decimal { if(t1.getText().trim().equals("0"))//Si se muestra inicialmente como 0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT } else if(t1.getText().trim().equals(""))/ /Si inicialmente se muestra vacío, no haga nada {} más { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); Encuentre la raíz cuadrada { x=Double.parseDouble(t1.getText().trim()); if(x<0) { t1.setText("Excepción de formato de número"); t1.setHorizontalAlignment(JTextField.RIGHT); } else { t1.setText(""+Math.sqrt(x)); t1.setHorizontalAlignment(JTextField.RIGHT); .setLength(0); y=0d; } más { if(e.getSource()==b[0])//Si se selecciona la tecla numérica "0" { if(t1.getText().trim().equals("0"))//Si es así mostrado Si la visualización de la pantalla es cero, no se realiza ninguna operación {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); } else if (e.getSource()==b2) //Se selecciona la tecla Atrás { if(! t1.getText().trim().equals("0"))//Si la pantalla no muestra cero{ if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());// Se puede generar una excepción de cadena fuera de límites t1.setHorizontalAlignment(JTextField.RIGHT) ; } else { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim()); } else { t1.setText(str.append(e.getActionCommand()).toString()); ; y=Double.parseDouble(t1.getText().trim()); } } } catch(NumberFormatException e1){ t1.setText("Excepción de formato numérico"); e1){t1.setText("Índice de cadena fuera de límites"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }Representación de operaciones:
Esto completa la programación de una calculadora Java simple. Espero que este artículo pueda inspirar a todos a escribir calculadoras. Esta es solo una calculadora simple y puede continuar usándola para mejorar las funciones de la calculadora.