Java - Ayuda con calculadora de fracciones java eclipse

 
Vista:
sin imagen de perfil

Ayuda con calculadora de fracciones java eclipse

Publicado por Gerardo (2 intervenciones) el 11/02/2023 22:51:47
Hola, soy novato en esto, estoy haciendo una tarea que es crear calculadora de fracciones, hice 2 paquetes con una clase porque es un requisito digamos, el primero es "Fracciones" donde está el código correspondiente a las operaciones, variables y en resumen el funcionamiento de la calculadora, y después tengo la Interfaz hecha con window builder, mi problema es que ahora mismo se ejecuta pero estoy limitado a solo hacer una operación cada vez que ejecuto la calculadora porque cuando quiero hacer una segunda operación, mi botón designado a establecer el numerador se deshabilita y tengo que cerrar y volver a abrir, ese es mi principal problema pero quisiera saber si también podrían ayudarme con detallitos como que el botón de igual "=" si lo presiono 2 veces, se queda trabada la calculadora, si presiono 2 veces el botón denominador me salta errores, solo es pulirla, el primer código corresponde a Fracciones y el segundo a Interfaz, muchas gracias.

public class Fracciones {

public int numerador;
public int denominador;

public Fracciones() {
numerador=0;
denominador=1;
}
public Fracciones(int a,int b) {
numerador=a;
denominador=b;
}

public Fracciones(Fracciones d) {
this.numerador=d.numerador;
this.denominador=d.denominador;
}
public int getNumerador() {
return numerador;
}
public void setNumerador(int numerador) {
this.numerador = numerador;
}
public int getDenominador() {
return denominador;
}
public void setDenominador(int denominador) {
this.denominador = denominador;
}


public Fracciones multiplicacion(Fracciones d) {

Fracciones op=new Fracciones();

op.setDenominador(denominador*d.denominador);
op.setNumerador(numerador*d.numerador);

return op;

}

public Fracciones suma(Fracciones d) {

Fracciones op=new Fracciones();

op.setDenominador(denominador*d.denominador);
op.setNumerador((numerador*d.denominador)+(denominador*d.numerador));

return op;
}

public Fracciones division(Fracciones d) {

Fracciones op=new Fracciones();

op.setDenominador(denominador*d.numerador);
op.setNumerador(numerador*d.denominador);

return op;
}

public Fracciones resta(Fracciones d) {

Fracciones op=new Fracciones();

op.setDenominador(denominador*d.denominador);
op.setNumerador((numerador*d.denominador)-(denominador*d.numerador));

return op;
}


public String respuesta() {
String d="";

d+=(numerador%denominador)+"/"+denominador;

return d;
}

public double valor() {

return (double)numerador/denominador;

}


public class Interfaz extends JFrame {
int numelem;
int denelem;
int codigo;

Fracciones x;
Fracciones y;


private JPanel contentPane;
private JTextField TxtDisplay;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Interfaz frame = new Interfaz();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Interfaz() {
setTitle("Calculadora");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 415);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

JButton btnNumerador = new JButton("Numerador");
btnNumerador.setBounds(70, 103, 85, 23);
btnNumerador.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
numelem=Integer.parseInt(TxtDisplay.getText());
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(false);


}
});
contentPane.setLayout(null);
contentPane.add(btnNumerador);

JButton btnDenominador = new JButton("Denominador");
btnDenominador.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
denelem=Integer.parseInt(TxtDisplay.getText());
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(false);
x=new Fracciones(numelem,denelem);
TxtDisplay.setText(x.respuesta());
}
});
btnDenominador.setBounds(185, 103, 104, 23);
contentPane.add(btnDenominador);

JButton btnsuma = new JButton("+");
btnsuma.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(true);
btnDenominador.setEnabled(true);
y=new Fracciones(x);
codigo=2;
}
});
btnsuma.setBounds(70, 149, 89, 23);
contentPane.add(btnsuma);

JButton btnresta = new JButton("-");
btnresta.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(true);
btnDenominador.setEnabled(true);
y=new Fracciones(x);
codigo=3;
}
});
btnresta.setBounds(185, 149, 89, 23);
contentPane.add(btnresta);

JButton btndivision = new JButton("/");
btndivision.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(true);
btnDenominador.setEnabled(true);
y=new Fracciones(x);
codigo=4;
}
});
btndivision.setBounds(70, 193, 89, 23);
contentPane.add(btndivision);

JButton btnmultiplicacion = new JButton("x");
btnmultiplicacion.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText(null);
TxtDisplay.requestFocus();
btnNumerador.setEnabled(true);
btnDenominador.setEnabled(true);
y=new Fracciones(x);
codigo=1;
}
});
btnmultiplicacion.setBounds(185, 193, 89, 23);
contentPane.add(btnmultiplicacion);

TxtDisplay = new JTextField();
TxtDisplay.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
TxtDisplay.setHorizontalAlignment(4);
}
});
TxtDisplay.setBounds(59, 26, 291, 37);
contentPane.add(TxtDisplay);
TxtDisplay.setColumns(10);

JButton btnNewButton_6 = new JButton("=");
btnNewButton_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (codigo) {
case 1:
y=y.multiplicacion(x);
break;

case 2:
y=y.suma(x);
break;

case 3:
y=y.resta(x);
break;

case 4:
y=y.division(x);
break;
}
TxtDisplay.setText(y.respuesta());
}
});
btnNewButton_6.setBounds(195, 237, 79, 23);
contentPane.add(btnNewButton_6);

JButton btnNewButton_7 = new JButton("Valor Decimal");
btnNewButton_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText(Double.toString(y.valor()));
}
});
btnNewButton_7.setBounds(70, 237, 112, 23);
contentPane.add(btnNewButton_7);

JButton btnNewButton_8 = new JButton("Limpiar");
btnNewButton_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TxtDisplay.setText("");
}
});
btnNewButton_8.setBounds(70, 307, 89, 23);
contentPane.add(btnNewButton_8);

JButton btnNewButton_9 = new JButton("Salir");
btnNewButton_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
btnNewButton_9.setBounds(185, 307, 89, 23);
contentPane.add(btnNewButton_9);
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder