Hola buenas. estoy tratando de hacer una aplicacion para conversion de temperatura(centrigrado,farenheit,kelvin);
bien pero tengo una duda y es que no se como usar los eventos de los JComboBox , lo que pasa es que debo seleccionar un item de cada combobox y luego si seleccionar los que quiero para que funcione como puedo arreglar eso?? aqui el codigo que llevo:
Código PHP:
//Ejercicios 13.12 y 13.13 Capitulo 13
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class NewMain extends JFrame{
private JLabel eDe,eA,cant,salida;
private JTextField cantidad;
private JComboBox de,a;
private JButton convertir, salir;
private String DE="", A="";
public NewMain(){
super("Conversor de temperatura.");
Container contenedor = getContentPane();
contenedor.setLayout(new FlowLayout());
eDe = new JLabel("De: ");
eA = new JLabel(" A:");
JPanel panel1 = new JPanel();
panel1.add(eDe);
panel1.add(eA);
contenedor.add(panel1);
//Combo Boxes
de = new JComboBox();
de.addItem("Centigrados");
de.addItem("Fahrenheit");
de.addItem("Kelvin");
de.setMaximumRowCount(3);
de.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getStateChange() == ItemEvent.SELECTED){
DE = de.getSelectedItem().toString();
}
}
}
);
a = new JComboBox();
a.addItem("Centigrados");
a.addItem("Fahrenheit");
a.addItem("Kelvin");
a.setMaximumRowCount(3);
a.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getStateChange() == ItemEvent.SELECTED){
A = a.getSelectedItem().toString();
}
}
}
);
JPanel panel2 = new JPanel();
panel2.add(de);
panel2.add(a);
contenedor.add(panel2);
//Etiqueta y Campo de texto para ingresar la cantidad
cant = new JLabel("Cantidad:");
cantidad = new JTextField(10);
JPanel panel3 = new JPanel();
panel3.add(cant);
panel3.add(cantidad);
contenedor.add(panel3);
//Botones
convertir = new JButton("Convertir");
convertir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
convertir(Integer.parseInt(cantidad.getText()), DE, A);
}
}
);
salir = new JButton("Salir");
salir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
JPanel panel4 = new JPanel();
panel4.add(convertir);
panel4.add(salir);
contenedor.add(panel4);
//Etiqueta para mostrar la salida
salida = new JLabel("");
JPanel panel5 = new JPanel();
panel5.add(salida);
contenedor.add(panel5);
setSize(250,250);
setVisible(true);
setResizable(false);
}
public void convertir(int canti, String de, String a){
int numero = canti;
String desde = de;
String hacia = a;
double resultado = 0;
//De centrigrados a centigrados
if(desde.equals("Centigrados") && hacia.equals("Centigrados")){
resultado = numero;
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De grados centigrados a grados farenheit
if(desde.equals("Centigrados") && hacia.equals("Fahrenheit")){
resultado = 9*(numero/5)+32;
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De grados centigrados a grados kelvin
if(desde.equals("Centigrados") && hacia.equals("Kelvin")){
resultado = (numero + 273.15);
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
////////////////////////////////////////////////////////////////////////
//De farenheit a centigrados
if(desde.equals("Fahrenheit") && hacia.equals("Centigrados")){
resultado = (5/9)*(numero-32);
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De farenheit a farenheit
if(desde.equals("Fahrenheit") && hacia.equals("Fahrenheit")){
resultado = numero;
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De farenheit a kelvin
if(desde.equals("Fahrenheit") && hacia.equals("Kelvin")){
resultado = (numero+459.67)/(9/5);
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
////////////////////////////////////////////////////////////////////////
//De kelvin a centigrados
if(desde.equals("Kelvin") && hacia.equals("Centigrados")){
resultado = (numero - 273.15);
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De kelvin a farenheit
if(desde.equals("Kelvin") && hacia.equals("Fahrenheit")){
resultado = (numero-273)*(9/5)+32;
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
//De kelvin a kelvin
if(desde.equals("Kelvin") && hacia.equals("Kelvin")){
resultado = numero;
salida.setText("Resultado: " + resultado);
//cantidad.setText("");
}
}
public static void main(String[] args) {
NewMain conversor = new NewMain();
conversor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
ademas nose si la calculadora de google estara mal o algo pero he intentado varias formulas para llevar de fahrenheit a kelvin y viceversa y me da diferente a los resultados de google si alguien me puede ayudar con eso por favor gracias de ante mano