Saltar al contenido

¿Que es Java FX?

27 noviembre 2008

Actualizando este post… era del 2008 y JavaFX cambio bastante…

Java Fx fue un lenguaje de Sun (ahora Oracle) para competir con Adobe y su tan popular Flash, ahora se convirtio en un API para Java, quieren mas detalles, haganle una visita a google, ahora tutoriales no es lo que falta, esto solo es uno mas, bueno manos a la obra.

pd-> El release actual es el javaFX 2.0.3

JavaFX es la competencia de Silverlight, Adobe Flash y HTML5, he aquí un poco de código para comenzar:

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 fácil y simple acá? bueno la verdad es que no hay nada de eso acá, esto es para gurus, en realidad es mucho mas fácil (solo que me gusta asustar a la gente XD) la programación para los desarrolladores en general (yo incluido).

Primero se lo bajan de aqui y también el ultimo netbeans , lo instalan ahora los siguientes pasos:

En Netbeans:

  1. Sobre el menú File, escogen New Project.
  2. En la categoría JavaFX application, escogen JavaFX Application. Click Next.
  3. Le ponen de nombre Circulito y click Finish.

En el archivo que se creo, borran los imports le ponen estos:

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.effect.BlendMode;
import javafx.scene.effect.BoxBlur;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.StrokeType;
import javafx.stage.Stage;
import javafx.util.Duration;
import static java.lang.Math.random;

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 borramos el código autogenerado por netbeans, menos los imports, y ponemos este código:

/**
 * @author Julio Cesar Cachay Perez
 */
public class ColorfulCircles extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        primaryStage.show();
    }
}

Como vemos el método Main() tiene al método Launch() que es el disparador.

Ahora sobrescribiremos la clase abstracta Start():

Es hora de conocer  mas a fondo las funciones en java

/**
 * @author Julio Cesar Cachay Perez
 */
@Override
public void start(Stage primarystage) {
    Group root = new Group();
    Scene scene = new Scene(root, 800, 600, Color.BLACK);
    primaryStage.setScene(scene);

    primaryStage.show()

Agregamos unos 30 circulos:

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

Group circles = new Group();
for (int i = 0; i < 30; i++) {
   Circle circle = new Circle(150, Color.web("white", 0.05));
   circle.setStrokeType(StrokeType.OUTSIDE);
   circle.setStroke(Color.web("white", 0.16));
   circle.setStrokeWidth(4);
   circles.getChildren().add(circle);
}
root.getChildren().add(circles);

Obtenemos esto:

Agregamos unos efectos visuales para que se vea interesante:

/**
 * @author Julio Cesar Cachay Perez
 */
circles.setEffect(new BoxBlur(10, 10, 3));

Bueno es hora de agregar un fondo colorido:

/**
 * @author Julio Cesar Cachay Perez
 */
Rectangle colors = new Rectangle(scene.getWidth(), scene.getHeight(),

     new LinearGradient(0f, 1f, 1f, 0f, true, CycleMethod.NO_CYCLE, new
         Stop[]{
            new Stop(0, Color.web("#f8bd55")),
            new Stop(0.14, Color.web("#c0fe56")),
            new Stop(0.28, Color.web("#5dfbc1")),
            new Stop(0.43, Color.web("#64c2f8")),
            new Stop(0.57, Color.web("#be4af7")),
            new Stop(0.71, Color.web("#ed5fc2")),
            new Stop(0.85, Color.web("#ef504c")),
            new Stop(1, Color.web("#f2660f")),}));
root.getChildren().add(colors);

Aplicamos un poco de Blend, borrando estas 2 lineas de código:

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

root.getChildren().add(colors);
root.getChildren().add(circles);

Y agregamos este de acá donde estuvieron esas lineas:

/**
 * @author Julio Cesar cachay Perez
 */
Group blendModeGroup =
    new Group(new Group(new Rectangle(scene.getWidth(), scene.getHeight(),
        Color.BLACK), circles), colors);
colors.setBlendMode(BlendMode.OVERLAY);
root.getChildren().add(blendModeGroup);

Por ultimo animamos:

Primero importamos import static java.lang.Math.random

Ahora agregamos este código antes de la linea primaryStage.show():

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

Timeline timeline = new Timeline();
for (Node circle: circles.getChildren()) {
    timeline.getKeyFrames().addAll(
        new KeyFrame(Duration.ZERO, // la posicion inicial sera 0
            new KeyValue(circle.translateXProperty(), random() * 800),
            new KeyValue(circle.translateYProperty(), random() * 600)
        ),
        new KeyFrame(new Duration(40000), // la posicion final sera 40s
            new KeyValue(circle.translateXProperty(), random() * 800),
            new KeyValue(circle.translateYProperty(), random() * 600)
        )
    );
}
// 40 segundos de animacion
timeline.play();

Y el resultado sera una animación como esta:

Y si quieren correrlo solo van al directorio raíz del proyecto y buscan el archivo jar (aplicación de escritorio), jnlp (La aplicación funcionara en modo Web Start) o el html para web

Suerte!

5 comentarios dejar un →
  1. 22 agosto 2009 1:36 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

  2. Julio Cesar Cachay Pérez Enlace permanente
    4 septiembre 2009 12:34 am

    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!

  3. 15 septiembre 2009 6:33 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

Trackbacks

  1. Netbeans 6.5 y JavaFX 1.0 « El Blog de Murphy
  2. JavaFX Liberado - La alternativa abierta a Flash/Silverlight para linux disponible gratuitamente y con código open source. « Arukard’s Weblog

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 183 seguidores