Iniciando con JavaFX: Jython + JavaFX
Hace unas horas me puse a picarle al Jython y pues me gusto, allí andaba y luego me dije: ¿Y que onda con Swing? Pues que le sigo scripteando(ese termino siquiera existe?) me aventé unas cuantas ventanitas todo cool hasta que me acorde de JavaFX... no me pude quitar la idea de poder ejecutar código FX en Python (Jython pues...) entonces comenzó la travesía jeje.
Preparando el terreno
Antes que nada debemos establecer una variable de entorno que es la que le dirá a Jython de donde obtener las clases de JavaFX.
Para esto hacemos el procedimiento(Windows 7): Inicio > clic derecho en Equipo > Propiedades > Configuración Avanzada del Sistema > Variables de entorno.
En la ventana de Variables de entorno en la sección Variables del sistema damos clic a Nueva y colocamos los siguientes valores:
Nombre de la variable: CLASSPATH
Valor de la variable: ruta\al\sdk\de\javafx\rt\lib\jfxrt.jar en este caso yo estoy usando la siguiente: C:\Program Files\Oracle\JavaFX 2.1 SDK\rt\lib\jfxrt.jar
Ahora si, podemos continuar.
Código
Primero usaremos un .java de guía para pasarlo a .py
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
*
* @author kalt
*/
public class JavaFXApplication1 extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
Este el ejemplo que te hace NetBeans :) ahora hay que hacerlo en Jython
#Los siguientes imports son de JavaFX ;)
from javafx.application import Application
from javafx.stage import Stage
from javafx.scene import Scene
from javafx.scene.control import Button
from javafx.scene.layout import StackPane
from javafx.event import ActionEvent
from javafx.event import EventHandler
#Declaramos la clase y hereda de Application e implementa EventHandler
class HiJavaFX(Application, EventHandler):
#Sobrescribimos el metodo start
def start(self, escenario):
escenario.setTitle("Jython + JavaFX")
boton = Button("Dame clic")
boton.setOnAction(self)
pane = StackPane()
pane.getChildren().add(boton)
escenario.setScene(Scene(pane,300,250))
escenario.show()
#Y también el método handle
def handle(self, evento):
print "Hola mundo desde Jython + JavaFX"
if __name__=="__main__": #Iniciamos la aplicación
#Aqui es donde interviene el modulo sys pues usamos la segunda
#forma del método launch.
Application.launch(HiJavaFX().class, sys.argv[0])
Muy parecido, lo mas importante de este ejemplo es el empleo de el modulo sys para obtener los argumentos de JavaFX. Por cierto, que hasta donde yo se, no hay una forma oficial de implementar JavaFX en Jython.
Espero que les sea útil. Saludos!
Basado en hechos reales XD: http://kodegeek.com/blog/2011/10/09/jython-javafx-comienzo-duro
- Jose Manuel's blog
- Inicie sesión o regístrese para enviar comentarios




Comentarios
Python en Java
Muy buena info ... a ver si pruebo tu ejemplo
0_0