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++)
{ p>
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; p>
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);
} p>
}
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);}
}
}