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:
- String (for java.lang.String)
- Boolean (for java.lang.Boolean)
- Number (for java.lang.Number)
- Null (nulo, nada)
- Duration (no para Java)
- 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
[...] 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
[...] Que es JavaFX [...]
Pingback por JavaFX Liberado - La alternativa abierta a Flash/Silverlight para linux disponible gratuitamente y con código open source. « Arukard’s Weblog — 10 Diciembre 2008 @ 10:49 pm
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
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
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