Red de conocimiento informático - Conocimiento de la instalación - En relación con las preguntas de programación sobre GUI en Java, implemente una calculadora sugerida

En relación con las preguntas de programación sobre GUI en Java, implemente una calculadora sugerida

importar javax.swing.*;

importar javax.swing.JTextField;

importar java.awt.*;

importar java.awt.event.*;

importar java.lang.*;

importar java.awt.Color;

la clase pública Ex5_2 extiende JFrame implementa ActionListener

{

JPanel privado p1 = nuevo JPanel(); //Crear panel

JPanel privado p2 = nuevo JPanel();

private 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

etiqueta privada de JLabel / /Información de etiqueta

StringBuffer str; //La cadena que se muestra en la pantalla

double x,y //xey son ambos operandos

int; z ; //Z representa en qué operador se hizo clic 0 representa "+", 1 representa "-", 2 representa "*", 3 representa "/"

JButton privado b[] = new JButton[ 12]; //Crea una matriz con 12 botones

private JButton b1,b2,b3,b4,b5,b6,b7,b8; //Botones de funciones aritméticas

public Ex5_2 ()

{

super("Calculadora simple"); // Nombre de la ventana

Contenedor c = getContentPane(); // Crea un objeto de panel de contenido;

t1 = new JTextField(30);

t1.setEditable(false); //Solo se puede mostrar, no editar

t2 = new JTextField( 30);

t2.setEditable(false); //Solo se puede mostrar, no editar

label = new JLabel("Bienvenido a Xiaowu Calculator^_^ o~ Trabaja duro ! ");

label.setForeground(Color.blue);

//Crear un buffer 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); //Agrega un cuadro de texto al panel

p2.setLayout(new GridLayout(4,1)); //Diseña el panel en 4 filas y 1 columna

for (int i=0;i<10;i++) //Establece etiquetas para los botones 0~9 en la matriz y registra oyentes

{

String s=" "+i;

b[i]= nuevo(s) JButton(s);

b[i].addActionListener(this);

}

//Crea una instancia de cada botón

b[10]= new JButton("-/+"); b[11]= new JButton(".");< / p>

b1= nuevo JButton("/"); b2= nuevo JButton("Volver");

b3= nuevo JButton("*"); b4= nuevo JButton("C " );

b5= nuevo JButton("+"); b6= nuevo JButton("Sqrt");

b7= nuevo JButton("-"); ("=");

//Establece el color de primer plano del botón

for(int i=0;i<12;i++)

{

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

}

b1.setForeground(Color.red); b3.setForeground(Color.red);

b5.setForeground(Color.rojo); b7.setForeground(Color.rojo);

b2.setForeground(Color.azul); b4.setForeground(Color.azul);

b6.setForeground(Color.red); b8.setForeground(Color.blue);

//Agregar al panel

p1.add(b[ 7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); [4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4);

p1.add( b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); (b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b8);

p1. setLayout(new GridLayout(4,5,5,5));

//Registrar oyente

b[10].addActionListener(this); b[11].addActionListener ( esto);

b1.addActionListener(esto); b2.addActionListener(esto);

b3.addActionListener(esto); b4.addActionListener(esto);

b5.addActionListener(this); b6.addActionListener(this);

b7.addActionListener(this); b8.addActionListener(this);

//Agregar el panel a el panel de contenido

c.add(p2);

c.add(p1);

c.setLayout(new FlowLayout()); Establecer en diseño secuencial

setDe

defaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Establecer la acción de cierre de la ventana

setVisible(true); //Establecer en visible

setResizable(false); p>

p>

setSize(400,300); //Establece el tamaño de la ventana

}

//El método principal crea 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)

{

intentar

{

if(e.getSource()==b4) //Seleccione " C" para borrar

{

t1.setText("0"); //Borrar el cuadro de texto

t1.setHorizontalAlignment(JTextField.RIGHT); //Alineación del 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 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;

z=0;

}

else if(e.getSource()== b7) //Haga clic en el botón menos para obtener el valor x y el valor z y borrar el valor 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;

z =2;

}

else 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());

>

str.setLength(0);

y=0d;

z=3;

}

más si (e.getSource()==b8)//Haga clic en el botón del signo igual para generar el resultado del cálculo

{

str.setLength(0);

cambiar (z)

{

caso 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;

caso 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;

caso 2: t1.setText(""+(x *y )); t1.setHorizontalAlignment(JTextField.RIGHT);break;

caso 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);break ;

}

}

else if(e.getSource()==b[11])//Haga clic en el botón "." decimal

{

if(t1.getText().trim().indexOf('.')!=-1)//Determine si la cadena ya contiene un punto decimal

{

}

else //Si no hay 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 la pantalla inicial está vacía, no se realizará ninguna operación

{}

else

{

t1.setText(str .append(e.getActionCommand()).toString());

t1.setHorizontalAlignment(JTextField.RIGHT);

}

}

y=0d;

}

else if(e.getSource()==b6) //Encontrar la raíz cuadrada

{

x=Double.parseDouble(t1.getText().trim()

if(x<0)

<); p> {

t1 .setText("Excepción de formato numérico");

t1.setHorizontalAlignment(JTextField.RIGHT);

}

más

{

p>

t1.setText(""+Math.sqrt(x));

t1.setHorizontalAlignment(JTextField.RIGHT);

}

str.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 la pantalla muestra 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) //La tecla Atrás está seleccionada

{ p>

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);

str.setLength(0);

}

}

y=Double.parseDouble(t1.getText().trim()

}

else

{

t1.setText(str.append(e.getActionCommand()).toString());

t1.setHorizontalAlignment(JTextField. DERECHA);

p>

y=Double.parseDouble(t1.getText().trim());

}

}

}

catch(NumberFormatException e1){ t1.setText("Excepción de formato de número");

t1.setHorizontalAlignment(JTextField.RIGHT) }

catch(StringIndexOutOfBoundsException e1){ t1.setText("Índice de cadena fuera de límites

");

t1.setHorizontalAlignment(JTextField.RIGHT);}

}

}