viernes, 6 de febrero de 2009

JavaFX: A Stage "controller" / Un "controlador" de Stage


Update: Stage Controller hosted on Google Code, includes documentation for using the class. Click Here for a Java Web Start example.



This class allows you to "attach" some automatic behaviors to your app window (Stage). For example, you can make the window to stick to the edges of the screen with a simple... stickyBorders:true ... or select the borders you want to make sticky... ie. stickyLeft:true

You can persist the position and/or size of the window (with a simple persist:true, persistPosition:true or persistSize:true). You can anchor the window to the borders too (ie. anchorBottom:true). Enforce minimum and maximum sizes or enforce a specific size for the window or keep it in the middle of the screen, etc.

It can trigger two events: onResize and onMove... so, your app can obtain it screen position and size at any moment (demo, handling events).

There are many options and combinations.

Enjoy it ;)

Actualización: Ahora el Controlador de Stage es capaz de mantener la posición y/o tamaño de la ventana de la aplicación entre sesiones.

Esta clase permite definir comportamientos automáticos para la ventana de tu aplicación. Por ejemplo, puedes hacer que la ventana se "pegue" a los bordes de la pantalla con un simple... stickyBorders:true ... o seleccionar los bordes que quieres que sean "pegajosos"... ej. stickyLeft:true

Puedes hacer que la aplicación recuerde su posición y/o tamaño entre sesiones de uso (con un simple persist:true, persistPosition:true o persistSize:true). Puedes "anclar" la ventana a los bordes también (ej. anchorBottom:true). Forzar tamaños mínimos y máximos o un tamaño específico para la ventana... o mantener la ventana en el centro de la pantalla.

También puede gatillar dos eventos: onResize (si cambia el tamaño de la ventana) y onMove (si cambia de posición la ventana en la pantalla)... de esa manera la aplicación puede saber -en todo momento- en que área de la pantalla está localizada o que tamaño tiene (demo, manejando los eventos).

Hay muchas opciones y combinaciones.

Ojalá sea útil ;)

How to use it / Cómo se usa...
/** Stage controller */
var cs = controlStage { //persistFile: "testStage.persist"
initialPosition:controlStage.RIGHT + controlStage.TOP, persist:true
checkMinWidth:true, minWidth:440, checkMinHeight:true, minHeight:270,
stickyBorders:true


onResize: function(e):Void {
println("resize to {e.width},{e.height} at {e.minX},{e.minY}");
}
onMove: function(e):Void {
println("moved to {e.minX},{e.minY} with {e.width},{e.height}")
};


};

Stage {
// bind Stage (window) to the controller
width: bind cs.width with inverse
height: bind cs.height with inverse
x: bind cs.x with inverse
y: bind cs.y with inverse


// on stage close, stores last position and size
onClose: function() { cs.persistStage() };

scene: Scene { ....





Descargar el proyecto Netbeans 6.5.... DOWNLOAD the Netbeans 6.5 project.... CLICK HERE

5 comentarios:

Unknown dijo...

nuse si viene al caso.. (en la entrada) pero me fustaria saber si podria usar javaFX para crear toda una interfaz con diversas funciones es decir la interfaz de una página web con javaFX y nuse.. algunas funciones y efectos tipo flash... y complementarlo con PHP...es decir hacer un .com totalmente solo con JavaFX + PHP....nada de css

Alakat dijo...

Respondindo a xH:
Siempre se puede hacer si haces tu FrontEnd en JavaFX y mendiante invocación de servicios Web (escritos en lo que tu quieras) completas la lógica de la aplicación.
Pero a priori me parece un poco rebuscado, si JavaFX te permite usar Java por no hacer la lógica en Java y la vista en JavaFX.
Un saludo

Mauro dijo...

Bueno, cuando Sun anuncio JavaFX lo primero que mostraron fue una "version" de un sitio flash hecho con JavaFX:

http://www.google.cl/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fdownload.java.net%2Fgeneral%2Fopenjfx%2Fdemos%2Fstudiomoto.jnlp&ei=dU-QSa6KBIH8tgezicSECw&usg=AFQjCNGUN-Zxnw8YHAkr0Ykg1g0vi4xKcg&sig2=LparC3eSjOJIZUVZgGBXtA

Asi que ciertamente es factible hacer la interfaz en JavaFX y el backend (el servidor) con PHP, JSP, ASP, Perl o la tecnologia que prefieras en el servidor.

Por cierto, el otro dia lei que Sun planea liberar una version 1.5 de JavaFX, que incluiria varias mejoras... entre ella un componente llamado JWebPane que permitira incluir todo un navegador web en las aplicaciones Java y JavaFX (basado en un port Java de WebKit [chrome y safari se basan en webkit])... y segun entendi, incluso permitiria manipular el "canvas" del navegador desde Java/FX.

Perro dijo...

Hola, ya me canse de gogliar y no encuentro lo que busco, espero que tu puedas ayudarme.
Estoy haciendo una aplicacion, tiene 2 ventanas, de las que crear el netbeans por defecto (1 stage+1 scene) . En la primer ventana tengo 1 boton y un campo de texto swing. Lo que quiero hacer es q al apretar el boton se muestre la segunda ventana y lo que habia escrito en el campo de texto se muestre en un label en la segunda ventana. se puede? como?

Ivanhoe dijo...

Hola amigo, una pregunta, ¿existe alguna forma de anclar los componentes, como por ejemplo un botón, a un borde de la ventana de tal manera que cuando se redimensione la ventana cambien el tamaño del botón?