domingo, 7 de septiembre de 2014

Clojure ... interoperabilidad con Java: JOptionPane

"Cuando el alumno está listo, aparece el maestro, o al menos eso dicen"

En el post anterior vimos un ejemplo del uso de JOptionPane en código Clojure, ahora veremos como introducir datos usando el método showInputDialog.

1. Introduciendo un dato tipo 'String', el método no necesita  argumento.

;;importar librería
(import '(javax.swing JOptionPane));'

;;defino el método introduceDato
(defn introduceDato []
    (JOptionPane/showInputDialog
         (str "Introduce una cadena:")
     )
)

;;lo usamos así
(def entrada (introduceDato))

;;imprimimos
(JOptionPane/showMessageDialog nil,
   (str "Cadena: "entrada)
)


Resultado:






2. Método que decide si un número es menor a 100

(import '(javax.swing JOptionPane));'

(defn esMenor? [n]
  (if (< n 100) (JOptionPane/showMessageDialog nil,
      (str n" es menor a 100")
)  (JOptionPane/showMessageDialog nil,
      (str n"  es mayor a 100")
)   )
)


;;parseInt
(defn pasaEntero [s]
  (Integer. (re-find #"\d+" s)))

(def entrada "3")

;;'main' del programa
(try
  (esMenor? (pasaEntero entrada))
 (catch Exception e (str "error: " (.getMessage e)))

)


Resultado:



3. Obtener un número al cuadrado n^2=n*n

(import '(javax.swing JOptionPane));'

(defn introduceDato [s]
  (JOptionPane/showInputDialog
    (str s)
  )
)


(def numero(introduceDato "Introduce numero:"))

;;convertir String a número
(defn String->Number [str]
  (let [n (read-string str)]
       (if (number? n) n nil)))

;;función cuadrado
(defn cuadrado [n]
 (* n n)
)

;;'main' del programa
(try

  (JOptionPane/showMessageDialog nil,
     (str "El numero introducido es: "numero)
  )

  (JOptionPane/showMessageDialog nil,
     (str "Al cuadrado es: "(cuadrado (String->Number numero)))
  )


 (catch Exception e (str "error: " (.getMessage e)))
)

Resultado:










Ejecutar:   
java -jar clojure-1.6.0.jar uso_de_java_swing.cjl



No hay comentarios:

Publicar un comentario

WMIC

¿Has tenido la necesidad de obtener  la licencia OEM de tu PC o alguna otra característica técnica?  Usualmente existen herramientas visua...