martes, 31 de marzo de 2015

Ceylon: Interoperabilidad con Java ... javax.swing

Continuamos los ejemplos del uso de librerías Java en código Ceylon. En el post anterior vimos como importar las librerías básicas de Java, ahora importaremos el paquete javax.swing.

Tendremos tres archivos:
  1. module.ceylon
  2. package.ceylon
  3. run.ceylon
En este archivo importamos el módulo que incluye a la librería javax.swing

module.ceylon
module holaCeylon "1.0.0"{
    import java.base "7";
    import java.desktop "7";//incluye a javax.swing
}


Este archivo indicamos el paquete principal (holaCeylon) de nuestro programa.
package.ceylon
shared package holaCeylon;

El archivo que se compilará y ejecutará. Se trata de un mensaje que nos muestra la versión del lenguaje en una ventanita tipo alert.


run.ceylon
import javax.swing { JOptionPane }

shared void run(){
    JOptionPane.showMessageDialog(null,"Hola desde Ceylon ``language.version`` ");
}



Compilamos y ejecutamos:

También podemos hacer uso de showInputDialog() para introducir datos:
import javax.swing { JOptionPane }

shared void run(){
    value nombre=JOptionPane.showInputDialog("Introduce tu nombre");
    JOptionPane.showMessageDialog(null,"Hola ``nombre``");   
}


Convertir esos datos en Float o Integer. Podemos hacer un simple menú con tres opciones: calcular grados celsius, grados fahrenheit y salir.

import javax.swing { JOptionPane }

shared void run(){
    value c=Calculo();
    String? opc=JOptionPane.showInputDialog("\t1. Calcular grados Fahrenheit\n2. Calcular grados Celsius\nSalir (cualquier tecla)");

    if(exists opc){
        value opc_=opc;
        switch (opc)
        case ("1") {
            Float? numero=parseFloat(JOptionPane.showInputDialog("Introduce grado Celsius"));
            if(exists numero){
                value numero_=numero;
                JOptionPane.showMessageDialog(null,"Celsius: ``c.fahrenheit(numero)``");   
            }

        }
        case ("2") {
            Float? numero=parseFloat(JOptionPane.showInputDialog("Introduce grado Fahrenheit"));
            if(exists numero){
                value numero_=numero;
                JOptionPane.showMessageDialog(null,"Celsius: ``c.celsius(numero)``");   
            }
        }
        else {
            process.exit(0);
        }

    }
}

class Calculo(){
    shared Float celsius(Float fahr){
        return (fahr - 32) / 1.8;
    }

    shared Float fahrenheit(Float cels){
        return (1.8 * cels) + 32;
    }
}

Al compilar y ejecutar obtendremos lo siguiente:






Listo.
Links
http://ceylon-lang.org/documentation/1.1/reference/interoperability/java-from-ceylon/


No hay comentarios:

Publicar un comentario