es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar los “action listeners” para ejecutar métodos designados en entradas separadas.

Estoy casi terminando el desarrollo del backend para una pequeña aplicación que estoy haciendo para ayudarme a dar presupuestos de construcción. Hay cuatro campos de entrada (2 selecciones, 2 textos) y un botón al final que debería resumir los resultados y proporcionar un total. Las variables ya han sido ajustadas de manera que me darán la respuesta correcta bajo el acción del escuchador. El escuchador de acción está conectado al botón. El botón de cálculo no ha estado funcionando a pesar de intentar de diferentes maneras.

¿Estoy usando el escuchador de acción correctamente en este contexto?
“`java
package packagepackage;

import java.util.*;
import packagepackage.HintTextFieldUI;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.text.JTextComponent;

public class CP_GUI extends JFrame {

public JTextField linear;
public JComboBox<string> sump;
public JComboBox<string> elec;
public JTextField prep;
public JButton calculate;
public JLabel estimate;

public CP_GUI() {

<pre><code>JPanel panel = new JPanel();
JFrame frame = new JFrame();
panel.setLayout(new FlowLayout());

int subTotal = 0;

panel.setBorder(BorderFactory.createEmptyBorder(400, 400, 100, 100));

linear = new JTextField();
panel.add(linear);

prep = new JTextField();
panel.add(prep);

String[] sumpo = {"Nueva bomba de sumidero","Bomba de sumidero existente"};
sump = new JComboBox<>(sumpo);
panel.add(sump);

String[] electo = {"Hay una toma de corriente a menos de 6 pies de la bomba de sumidero","No hay una toma de corriente cercana, o no necesito una nueva"};
elec = new JComboBox<>(electo);
panel.add(elec);

calculate = new JButton("Calcular");
calculate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
String lins = linear.getText();
Integer linVar = Integer.parseInt(lins);
linVar *= 13;

Object sumps = sump.getSelectedItem();
Integer sumpVar = 0;
if("Nueva bomba de sumidero".equals(sumps)) {
sumpVar += 260;}

Object elecs = elec.getSelectedItem();
Integer elecsVar = 0;
if("Hay una toma de corriente a menos de 6 pies de la bomba de sumidero".equals(elecs)) {
elecsVar += 280;}

String preps = prep.getText();
Integer prepsVar = Integer.parseInt(preps);
prepsVar += 1;
prepsVar *= 110;

subTotal = linVar + sumpVar + elecsVar + prepsVar;
/* Gastos generales */
subTotal += 2428;
/* impuesto */
subTotal *= 11;
subTotal /= 10;
/* margen */
subTotal *= 12;
subTotal /= 10;
String inWords = String.valueOf(subTotal);
estimate.setText(inWords);
}
});

panel.add(calculate);
estimate = new JLabel();
panel.add(estimate);

frame.add(panel, BorderLayout.CENTER);
String title = "Calculadora de tubería de drenaje";
frame.setTitle(title);

frame.pack();
frame.setVisible(true);

linear.setUI(new HintTextFieldUI("Longitud del perímetro", true));
prep.setUI(new HintTextFieldUI("Horas de preptime", true));
</code></pre>

}

public static void main(String[] args) {
new CP_GUI();
}<br />
}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con el botón de cálculo que no funciona es que la variable subTotal nunca se actualiza con el valor calculado. Dentro del listener de acción, estás realizando todos los cálculos necesarios pero no estás asignando el valor a la variable subTotal. Deberías agregar la siguiente línea de código al final del listener de acción para actualizar la variable subTotal:

    subTotal = linVar + sumpVar + elecsVar + prepsVar + 2428;
    subTotal *= 11;
    subTotal /= 10;
    subTotal *= 12;
    subTotal /= 10;
    estimate.setText(Integer.toString(subTotal));
    

    Esto actualizará el valor de subTotal con el resultado calculado y lo mostrará en la etiqueta estimate en la GUI.

Comments are closed.