Single Tech Games

¿Que es Java FX?

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!

0 0 votes
Article Rating
Subscribe
Notify of
guest
5 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Eduardo

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

pedro

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

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