Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/03/2011, 12:18
gorystyle
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: JComboBox y sus eventos problema

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 convertirsalir;
    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();
                    }
                }
            }
        );

        
= 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.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()), DEA);
                }
            }
        );
        
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 cantiString deString 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