Sou leigo ainda em java e estou com um problema no meu programa. Ele só funciona 1 vez, pois depois que eu clico no botão “limpar” e adiciono novos valores para as variáveis, elas continuam com os valores da 1ª vez q eu digitei. Além disso, onde tem os check bottom de Tensão 110V ou 220V e “circuito em: serie / paralelo”, como eu faço para n deixar que o usuário selecione as duas ao mesmo tempo? Alguém pode me ajudar? valeu
O código é esse:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Eletrica extends JFrame implements ActionListener
{
private double resistencia_equivalente;
private double tensão;
private double corrente;
private double potencia;
private JFrame jf = new JFrame("Instalação de Lâmpadas");
//JLabels
private JLabel label1 = new JLabel("Quantidade de lâmpadas: ");
private JLabel label2 = new JLabel("Resistência de cada lâmpada: ");
private JLabel label3 = new JLabel("Circuito em: ");
private JLabel label4 = new JLabel("Tensão: ");
private JLabel label5 = new JLabel("Potência (W):");
private JLabel label6 = new JLabel("Corrente (A):");
//JTextFields
private JTextField field1 = new JTextField(5);
private JTextField field2 = new JTextField(5);
private JTextField field3 = new JTextField(5);
private JTextField field4 = new JTextField(5);
private JTextField field5 = new JTextField(8);
private JTextField field6 = new JTextField(8);
//JButtons
private JButton button1 = new JButton("Calcular");
private JButton button2 = new JButton("Limpar");
//JCheckBoxs
private JCheckBox check1 = new JCheckBox("Série");
private JCheckBox check2 = new JCheckBox("Paralelo");
private JCheckBox check3 = new JCheckBox("110 V");
private JCheckBox check4 = new JCheckBox("220 V");
public Eletrica()
{
Container c = jf.getContentPane();
c.setLayout(new FlowLayout());
//Quantidade de lampadas
c.add(label1);
c.add(field1);
//Resistência de cada lâmpada
c.add(label2);
c.add(field2);
//Resistência - Serie . Parelelo
c.add(label3);
c.add(check1);
c.add(check2);
//Tensão
c.add(label4);
c.add(check3);
c.add(check4);
//Botão Calcular
c.add(button1);
button1.addActionListener(this);
//Potência
c.add(label5);
c.add(field5);
//Corrente
c.add(label6);
c.add(field6);
//Botão Limpar
c.add(button2);
button2.addActionListener(this);
//Programando os CheckBox
HandlerClass handler = new HandlerClass();
check1.addItemListener(handler);
check2.addItemListener(handler);
check3.addItemListener(handler);
check4.addItemListener(handler);
//Configuração da janela
jf.setTitle("Instalação de Lâmpadas");
jf.setSize(300,250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(true);
jf.setVisible(true);
}
public static void main (String[] args)
{
new Eletrica();
}
//Classe para programar os CheckBox
private class HandlerClass implements ItemListener
{
public void itemStateChanged(ItemEvent event)
{
//Cálculos quando tá em série
if (check1.isSelected() && check3.isSelected())
{
tensão=110;
resistencia_equivalente = Double.parseDouble(field1.getText())*Double.parseDouble(field2.getText());
corrente = (tensão)/(resistencia_equivalente);
potencia = tensão*corrente;
}
if (check1.isSelected() && check4.isSelected())
{
tensão=220;
resistencia_equivalente = Double.parseDouble(field1.getText())*Double.parseDouble(field2.getText());
corrente = (tensão)/(resistencia_equivalente);
potencia = tensão*corrente;
}
//Calculos quando tá em paralelo
if (check2.isSelected() && check3.isSelected())
{
tensão=110;
resistencia_equivalente = Double.parseDouble(field2.getText())/Double.parseDouble(field1.getText());
corrente = (tensão)/(resistencia_equivalente);
potencia = tensão*corrente;
}
if (check2.isSelected() && check4.isSelected())
{
tensão=220;
resistencia_equivalente = Double.parseDouble(field2.getText())/Double.parseDouble(field1.getText());
corrente = (tensão)/(resistencia_equivalente);
potencia = tensão*corrente;
}
}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==button2)
{
field1.setText(null);
field2.setText(null);
field3.setText(null);
field4.setText(null);
field5.setText(null);
field6.setText(null);
}
else
{
field5.setText("" + (potencia));
field6.setText("" + (corrente));
}
}
}