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