El Blog de Murphy

27 Noviembre 2008

¿Que es Java FX?

Archivado en: JavaFX — Etiquetas:, , — Julio Cesar Cachay Pérez @ 4:52 pm

Java Fx es un nuevo lenguaje de java para competir con Adobe y su tan popular Flash, quieren mas detalles, haganle una visita a google, ahora tutoriales no es lo que falta, aunque estuve revisando algunos y son muy pasados (javafx estaba en fase Beta, cambio constantemente), yo hago el mismo basandome en unas diapositivas de Sun que publicaron hace menos de 1 mes y encontraran mas informacion, por ahora solo les mostrare un poco de programacion en javafx.

pd-> El relase de javaFX 1.0 fue esta semana (actualizado)

JavaFX es el regalo prometido para los que no saben nada de programacion, por su simplicidad y facilidad, por ejemplo una clase que hace un circulo

JFrame f = new JFrame();
if(com.awt.sun.util.AWTUtilities.isTranslucentySupported()) {
    com.awt.sun.util.AWTUtilities.setTranslucency(true);
}
frame.setUndecorated(true);
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
Graphics2D gfx = (Graphics2D)g.create();
gfx.setRenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIASING_ON):
gfx.setColor(Color.RED);
gfx.drawOval(0,0,100,100);
gfx.dispose();
}
}
frame.getRootPane().setcontent(panel);
frame.setVisible(true);

Ustedes se preguntaran ¿y donde esta lo facil y simple aca? bueno la verdad es que no hay nada de eso aca, esto es para gurus, en realidad es mucho mas facil (solo que me gusta asustar a la gente XD) la programacion para los desarrolladores en general (yo incluido)

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;

/**
 * @author Julio Cesar Cachay Perez
 */

Stage {
    title: "Application title"
    width: 250
    height: 250
    scene: Scene {
        content: [ Circle {
                centerX: 100,
                centerY: 100
                radius: 40
                fill: Color.RED
            }
    ]
    }
}

Para entender lo que voy a explicar a continuacion les recomiendo saber lo basico de java, aunque voy a tratar de hacerlo tan entendible como pueda

Ahora paso a paso:

Primero como instalarlo:

1) Necesitamos el SDK de java, eso lo bajamos de aqui

2) Despues de instalarlo se bajan el combinado de netbeans y java FX

3) Abrimos Netbeans, y nos vamos a File-New Project, y escogemos la carpeta que dice javafx y luego escogemos la opcion JavaFX Script Application

Ahora que tenemos todo listo comenzamos

Lo primero que vamos a ver son las variables:

JavaFX soporta 6 tipos primitivos:

  1. String (for java.lang.String)
  2. Boolean (for java.lang.Boolean)
  3. Number (for java.lang.Number)
  4. Null (nulo, nada)
  5. Duration (no para Java)
  6. Void (para funciones)

Ejemplo:

/**
 * @author Julio Cesar Cachay Perez
 */

var x:Number = 0.9;
var name:String = "John";
var y:Integer = 0;
var flag:Boolean = true;
def numero = 100;

//La diferencia entre var y def es que def es final (no cambia)
//mientras que var puede ser cambiado durante la animacion
var numbers:Integer[] = [1,2,3,4,5];

//jugando
var s1 = 'Hola';// 2 formas distintas de declarar un String
var s2 = "Hola";

def nombre = 'Joel';
var s = "Hola {nombre}"; // s = 'Hola joel'

def rpta = true;
var es = "La respuesta {if (rpta) "Si" else "No"}"; // s = 'La respuesta es si'

def one = "Este ejemplo ";
def two = "une dos strings.";
def three = "{one}{two}";      // une string one y string two
println(three);                // 'Este ejemplo une 2 strings.'

def numOne = 1.0; // def numOne : Number = 1.0; (lo mismo)
def numTwo = 1;   // def numTwo : Integer = 1;

function imprimime() : Void { //Esta funcion no devuelve nada
     println("No devuelve nada!");
}

function checka(palabra) {
     if(palabra == null) {
          println("recibi un nulo.");
     } else {
          println({palabra});
     }
}
checka(null);

Ahora los operadores que son diferentes de Java:

* Java: &&
JavaFX: and
* Java: ||
JavaFX: or
* Java: !
JavaFX: not

Es hora de conocer  mas a fondo las funciones en java

/**
 * @author Julio Cesar Cachay Perez
 */

def numuno = 100;
def numdos = 2;
var resultado;

function sumar() {
     resultado = numuno + numdos;
     println("{numuno} + {numdos} = {resultado}");
}

function restar() {
     resultado = numuno - numdos;
     println("{numuno} - {numdos} = {resultado}");
}

function multiplicar() {
     resultado = numuno * numdos;
     println("{numuno} * {numdos} = {resultado}");
}

function dividir() {
     resultado = numuno / numdos;
     println("{numuno} / {numdos} = {resultado}");
}

sumar();//llamamos a la funcion de sumar (= llamamos a todas las funciones)
restar();
multiplicar();
dividir();

Aja pero ¿y si quiero pasarle yo los numeros? pues javaFX al igual que su papi Java tiene para todos los gustos y colores, miren:

/**
 * @author Julio Cesar Cachay Perez
 */

var resultado;

sumar(100,10);
restar(50,5);
multiplicar(25,4);
dividir(500,2);

function sumar(numuno: Integer, numdos: Integer) {
     resultado = numuno + numdos;
     println("{numuno} + {numdos} = {resultado}");
}

function restar(numuno: Integer, numdos: Integer) {
     resultado = numuno - numdos;
     println("{numuno} - {numdos} = {resultado}");
}

function multiplicar(numuno: Integer, numdos: Integer) {
     resultado = numuno * numdos;
     println("{numuno} * {numdos} = {resultado}");
}

function dividir(numuno: Integer, numdos: Integer) {
     resultado = numuno / numdos;
     println("{numuno} / {numdos} = {resultado}");
}

Ahh, y diran ok, pero quiero hacer algo como (1+300) * (23+52) , bueno eso es muy, demasiado, recontra super facil:

/**
 * @author Julio Cesar Cachay Perez
 */
var resultado;
function sumar(numuno: Integer, numdos: Integer) {
     resultado = numuno + numdos;
     println("{numuno} + {numdos} = {resultado}");
     return resultado;
}
var total;

total = sumar(1,300) * sumar(23,52);
println("Total: {total}");

No pero yo no recibi numeros, recibi palabras… ah pues, ia no se puede hacer nada… mentira ^_^ ahi les va:

/**
 * @author Julio Cesar Cachay Perez
 */

def trescientos:String = "300";
def veintitres:String = "23";

var resultado;
function sumar(numuno: Integer, numdos: Integer) {
     resultado = numuno + numdos;
     println("{numuno} + {numdos} = {resultado}");
     return resultado;
}
var total;

def numuno = java.lang.Integer.parseInt(trescientos);
def numdos = java.lang.Integer.parseInt(veintitres);

total = sumar(1,numuno) * sumar(numdos,52);
println("Total: {total}");

Y eso no es todo… solo he utilizadop pequeñas variables y funciones, pero ahora les voy dar un pequeño codigo que es un curso intensivo de arrays

/**
 * @author Julio Cesar cachay Perez
 */

var dias = ["Lun","Mar","Mie","Jue","Vie"];//var dias: String[] = ["Lun","Mar","Mie","Jue","Vie"];

var semana = [dias, ["Sab","Dom"]]; // semana = ["Lun","Mar","Mie","Jue","Vie","Sab","Dom"]

var numeros = [1..100]; // del 1 al 100

var cinco = [1,2,3,4,5];

var mayoresados = cinco[n | n > 2];// [3,4,5]

//imprimimos cada dia
println(dias[0]);//En los arrays el primero se almacena en 0
println(dias[1]);
println(dias[2]);
println(dias[3]);
println(dias[4]);

println(sizeof dias);// imprime el tamaño del array, osea 5

dias = ["Lun"];// chancamos su contenido anterior ahora solo tiene ["Lun"]

insert "Mar" into dias;//insertamos "Mar", ["Lun","Mar"]
insert "Vie" into dias;//["Lun","Mar","Vie"]

// nos olvidamos de miercoles y jueves :S
insert "Mie" before dias[2];//insertamos antes de "Vie", ["Lun","Mar","Mie","Vie"]
insert "Jue" after dias[2];//insertamos despues de "Mie", ["Lun","Mar","Mie","Jue","Vie"]

insert "cuac" into dias; //["Lun","Mar","Mie","Jue","Vie","cuac"]
//"cuac"?! cuac no es dia :S
delete "cuac" from dias;//["Lun","Mar","Mie","Jue","Vie"]
//o delete dias[5];

//ia no kiero ningun dia ><
delete dias;

var ocnic = reverse cinco;//[5,4,3,2,1]

//seran iguales?
println(cinco == ocnic); // si son iguales imprime true, sino false// false

//ahora a separar la semana
var findsemana = semana[5..6];//o semana[5..], ["Sab","Dom"]

var diasdsemana = semana[0..<5];//["Lun","Mar","Mie","Jue","Vie"]

//queremos todos menos domingo
var nodomingo = semana[0..<];

Uff! ya es un moton de codigo que les estoy dando, y falta mas, pero seguire en otro post

Nota: Este codigo corre en JavaFX1.0 y Netbeans 6.5

5 comentarios »

  1. [...] a lo que vamos, resulta que todo lo que hize antes, lo corri con lo ultimo de javaFX y netbeans y taran!! no funciona [...]

    Pingback por Netbeans 6.5 y JavaFX 1.0 « El Blog de Murphy — 5 Diciembre 2008 @ 6:44 pm

  2. hola esta muy bueno tu tutorial pero tengo una duda sobre como ejecutar una aplicacion en javaFX con netbeans te digo los pasos que realizo:
    1.Voy al menu->Ejecutar–>compile (no sale error)
    2.Voy al menu->Ejecutar–>Generate Min Project (no sale error)
    3.Voy al menu->Ejecutar–>Ejecutar main project (y me sale este error:Cannot start java.exe.GENERACIÓN INCORRECTA (total time: 2 seconds)
    )
    espero tu respuesta porfavor y gracias de antemano

    comentario por pedro — 22 Agosto 2009 @ 1:36 pm

  3. hola, mira revisa tu version de netbeans porque la ultima version de netbeans no funciona con javaFX pero el problema podria ser en las rutas en todo caso puede hacer que apunte tu netbeans a javac, pero podria ser tu version de java, busca en C:\Program files\netbeans x.x\etc\netbeans.conf
    cambia la linea
    netbeans_jdkhome=”C:\Archivos de programa\Java\jdk1.6.x_xx”
    a tu version
    netbeans_jdkhome=”C:\Archivos de programa\Java\jdk1.6.x_xx”
    Saludos!

    comentario por Julio Cesar Cachay Pérez — 4 Septiembre 2009 @ 12:34 am

  4. Si eso no funciona, intenta crear un archivo para ejecutar Netbeans:

    set JAVA_HOME=C:\Archivos de programa\Java\jdk1.6.x_xx
    set path=%JAVA_HOME%\bin;%PATH%
    cd \Archivos de programa\NetBeans 6.7.1\bin
    call netbeans.exe

    comentario por Eduardo — 15 Septiembre 2009 @ 6:33 am


Canal RSS de los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Blog de WordPress.com.