No vi el segundo codigo.
 
El problema que tienes es que no hace falta que hagas esto:  
Código:
 de.setMaximumRowCount(3);
        de.addItemListener(
            new ItemListener(){
                public void itemStateChanged(ItemEvent e){
                    if(e.getStateChange() == ItemEvent.SELECTED){
                        DE = de.getSelectedItem().toString();
                    }
                }
            }
        );
  ni esto:  
Código:
 a.setMaximumRowCount(3);
        a.addItemListener(
            new ItemListener(){
                public void itemStateChanged(ItemEvent e){
                    if(e.getStateChange() == ItemEvent.SELECTED){
                        A = a.getSelectedItem().toString();
                    }
                }
            }
        );
  Ya que no necesitas un itemlistener para nada, pues solo vas a hacer los calculos cuando le des al boton convertir, no antes. Aparte tampoco necesitas el maximumrowcount.  
Elimina esas 2 partes de tu codigo e implementa en el actionPerfomed lo que te puse antes, ya veras como te funciona bien. Un saludo!