JavaFX: Modo Pantalla Completa

Este ejemplo no pertenece a la serie de tutos que planeo realizar sobre JavaFX, es mas como un tip.

Código

 

Explicación

La clase PantallaCompleta hereda de   e implementa la clase  . Esto hace que se tenga que sobre escribir los métodos start y handle, respectivamente.

Se usan 4 elementos, un componente de tipo  , un  , un   (la ventana) y una variable de tipo boolean para el control.

El método launch llama al método start quien crea los componentes y muestra la ventana. Aqui se le agrega un EventHandler al botón. Cuando es presionado se llama al metodo handle y este a su vez llama a pantallaCompleta. Este método recibe un objeto Stage (en este caso, la ventana misma).
Lo que realiza este método es comprobar el estado de la variable estaFull. Cuando es false se pasa un true al método  , cuando es true se pasa un false. La ultima linea del método asigna a estaFull su valor inverso.

Imágenes

Tamaño normal:

Pantalla completa:

Algo que me pareció chido fue que por defecto cuando entras al modo pantalla completa ya hay una tecla (Esc) que te regresa al modo normal.
Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

algo nuevo

Bueno pues aprender algo nuevo no tiene nada de malo, solo tengo una duda.

Cual seria un buen uso para JavaFX, me refieron en el sentido de crear aplicaciones. ??

Oh contra que otro entorno seria comparable ??

Imagen de Jose Manuel

Pues veras, esta plataforma

Pues veras, esta plataforma esta principalmente diseñada para desarrollar las RIAs (Rich Internet Application). Con la posibilidad de animaciones y efectos, es aquí donde dicen que JavaFX no tiene nada que hacer, puesto que ya existe Flash de Adobe y Siverlight de Microsoft. Y ni hablar de HTML5... En Desktop...pues la cosa no cambia mucho pero, según algunos si compite contra los anteriormente mencionados y otros mas.

Pero ahora que ya es open source algunos desarrolladores tienen la esperanza que la comunidad de desarrollo de JavaFX realice un milagro... jajaja, y como a mi me gusto, también espero que se haga un poco mas popular, que en la red casi no encuentras ejemplos de JavaFX 2.0 ni siquiera en ingles (aunque no he realizado busquedas extensas).

Si te interesa y puedes comprarlo, aquí hay un libro en amazon que puede servirte como guía de inicio:

Espero haber respondido tu pregunta. Saludos.

Que bueno que te decidiste a

Que bueno que te decidiste a probarlo, a mi tambien me gusto bastante en especial que puedes construir la interfaz en xml (FXML).
Te dejo un link que puede que te sea de utilidad:

Imagen de Sr. Negativo

JavaFX - Griffon

Por lo que comentaste en tu otro post Griffon me parece buena opción, sin embargo "la moda" es realizar aplicaciones web en vez de las de escritorio.

A mi parecer Swing todavía tiene vida.

Pero si ya te decidiste los lo Web puedes echerle un vistazo a estos Frameworks:

Esta bien explicado tu post.

Imagen de Jose Manuel

@luischavez, pues ya ves, me

@luischavez, pues ya ves, me anime, luchando contra el destino, y es que ya muchos lo consideran uno menos. Gracias por el link, hacerlo con xml parece raro, no se siente como si programaras, se siente mas como si crearas una pagina web jeje, mensadas mías.

@Sr. Negativo
Bueno realmente no me he decidido por los de web, simplemente resulto que JavaFX también sirve para escritorio jaja. Aunque a mi me gusta mas el desarrollo de aplicaciones de escritorio. Ya vi el Vaadin, esta O.O chido. A la mejor y me anime ahora si con aplicaciones para web.

Gracias por comentar. Saludos.

sobre java

solo una pregunta con el metodo getChildren() para que se utiliza y con el metodo main lauch(args) no se que signifique

java fx

soy nuevo en javafx y en java pero mi proyecto lo debo desarrollar con javafx y por eso he estado viendo tus tutoriales que son muy buenos pero tengo ciertas dudas en java swing cuando queria hacer una clase que tuviera una ventanta, la heredaba de la JFrame y en el constructor de la misma especificaba sus propiedades(tamaño,titulo etc) lo que ahora no logro entender es que las clases en javafx extienden de Application y pues tiene el metodo start, donde definis su tamaño con el objeto Stage.

Imagen de Jose Manuel

@HackRock gracias por

@HackRock gracias por comentar :)

Primero tu duda sobre el método  . En esta publicación menciono la estructura sobre los Nodos, de allí podemos obtener la definición de Nodo. Entonces, un nodo puede contener a otros nodos, haciendo al primero un nodo padre y al segundo un nodo hijo.

Ahora, hay tres tipos de nodos padre: Region, Group, Control. Todos estos tipos de nodos padre heredan de la clase  , de ella se implementa el método getChildren() en todos los nodos padre. Si observas la imagen(la que esta adjunta) que esta en la publicación que menciono, notaras que dentro de Region están los layouts, pues bien, el layout usado aquí es un layout de tipo  .

El uso de el método getChildren() regresa una lista de los nodos hijos que contiene un nodo padre.
El tipo de objeto de esta lista es:   que es la clase que se usa para agregar diferentes elementos pero, como en este caso hablamos de Nodos, entonces:  este es el tipo de lista que regresa el método. De este objeto podemos obtener los métodos que implementa; add(), addAll(), remove(), removeAll() y los demás... en otras palabras:

Un nodo padre obtiene una lista de nodos hijos, y a partir de esta lista puede hacer uso de métodos que permiten modificar la lista de nodos. Ya sea agregando mas nodos hijos o eliminando los nodos hijos.

El método lauch(args) que esta dentro del método principal es un método de la clase abstracta  . Así como debemos implementar el método start() para poder ejecutar nuestra aplicación debemos implementar a launch(). Primero expliquemos la clase Application:

El ciclo de vida de una aplicación de JavaFX es;

  • Se crea una instancia de la clase Application (aquí es donde entra nuestra clase) y también el hilo principal de la aplicación JavaFX
  • Se llama al método init() de la clase Application
  • Este lanza el hilo init y llama al método start()
  • Se finaliza el hilo init y se llama al método Plataform.exit()
  • Se llama al método stop() que finaliza el hilo principal de la aplicacion JavaFX

Entonces el objeto Application de nuestra clase llama dentro del método main a launch(args) que indica que sera una aplicación independiente (standalone). El método start() lo que hace es recibir un objeto del hilo principal de la aplicación JavaFX y lo que este contiene es una ventana prefabricada de la que a partir de allí nosotros podemos usar.

Espero haberte respondido las dudas y no haberte perdido mas :)
Saludos!

JavaFx

Jose Manuel muchas gracias por tu ayuda de verdad he comprendido lo de el metodo getChildren() y tambien lo de Stage y scene, me has ayudado más que mi profesor que la verdad no sabe explicar, tengo otra duda en la aplicacion que tengo que hacer esta relacionada con una base de datos,por lo tanto manejare roles de usuario(administrador y usuarios comunes) y entonces necesito un login que se conectara a la base de datos y verificara si es adminstrador o usuario comun y dependiendo del resultado me tendra que sacar una diferente esecenario ya que el adminstrador tendra mas privilegios, mi duda es la siguiente, primero le aparecera la ventana login se logueara verificara y le saldra la escena pero en debe desaparecer el login la ventana login no quiero que quede sino desaparezca una vez entre. Otra duda que tengo es ala ora de instanciar mi clase con javafx supongamos que tengo que instaciar a login cuando se cumpla una condicion supongamos que tengo una clase usuario y le digo que cuando if(usuario == null){ Login login = new Login()} si estuviera haciendo en una JFrame me funcionaria ya que en el contructor de la misma se encuentra la ventana con sus atributos pero en jafax no se como hacerlo ya que si instancio al metodo start espera recibir un Stage si me pudes ayudar te lo agredco de antemano!

JavaFX

Disculpa por todas las dudas que tengo pero he tratado de buscar pero la mayoria de tutoriales esta en ingles los traduzco pero se encuentran de una manera muy tecnicas que me es dificil de entender Muchas gracias por todo lo que haces por tomarte el tiempo responder!

Imagen de Jose Manuel

Ok, mira; Como ejemplo,

Ok, mira;

Como ejemplo, tendremos tres clases, La clase  ,  ,  .
La clase VentanaLogin crea una ventana simple y fea donde si el texto en el TextField 1 es "root" nos lanza el escenario de una ventana root (la clase VentanaRoot) y si el texto es "usuario" nos lanza un escenario de usuario( la clase VentanaUsuario). De esta manera se sustituye el escenario actual por el que se escoja.

VentanaUsuario.java

 

VentanaRoot.java

 

VentanaLogin.java

 
Lo que hacemos es parecido a las instancias de Swing, en la clase   creamos un objeto de tipo   y de tipo  . Cuando se escoja una opción y se realice el evento se instancian los objetos y se llama al método  . Como este método debe recibir un  , le pasamos el que JavaFX crea por nosotros y entonces es cambiado por el de la clase instanciada, dando como resultado la nueva ventana.

De esa manera ya no ocupas ocultar/destruir la ventana de login, pues ahora ha cambiado por otra ;)
Espero que se entienda el ejemplo y te sirva, lo hice muy rápido jeje
Saludos!

JavaFx

Me ha ayudado mucho! gracias solo porque el metodo start tiene que recibir una propiedad tipo final ? final Stage escenario

Imagen de Jose Manuel

Ah! se me olvido esa parte.

Ah! se me olvido esa parte. El escenario es usado en el método handle dentro de una clase interna anónima. Para usarla debemos declararla como final.

Bien pudimos usar otra forma de accesar al objeto Stage. Por ejemplo;
 
Si creamos un objeto   y le asignamos el valor del objeto Stage creado por JavaFX ya tenemos acceso a el desde cualquier método de nuestra clase, ahora, si implementamos la clase abstracta   y sobrescribimos el método  el atributo escenario no necesita ser final.
Espero que te sirva! Saludos!

JavaFx

Gracias, cuando tengo varios botones podria implemetar el metodo handle(Event evento)
podria ir comparando como se hacia con acctionListener que tenia el metodo performed(Event evento) esque es necesario que utilice varios botones entonces debo contralar todo los eventos. Muchas Gracias estoy por empezar con mi proyecto! simpre te estare consultando por si tengo un problema .

javaFx @Jose Manuel

@Jose Manuel Explicacionn de JavaFx
Mira solo te queria pedir favor si podes hacer un ejemplo en javafx de un formulario que pida los datos de una persona como nombre apellido, nombre de un usuario y su contraseña teniendo en cuenta que para la contraseña se utilice un tipo de PassworField y como pedir lo que ingreso con en TextField que utilizas el getText() pero en password que se utiliza? y tambien como utilizar HBox VBox! y que se le pueda colocar una imagen a el formulario o al esenario! gracias por ayudar!.

Imagen de Jose Manuel

Lo siento, pero las

Lo siento, pero las explicaciones sobre esos temas aun no están preparadas. Ademas no cuento con tiempo para explicarte con lujo de detalle.
Mientras decirte para obtener el texto del PasswordField se usa el mismo método  .

javaFx

ok, gracias!

Imagen de Jose Manuel

Se vienen buenos temas ;)

Pero si te sirve, dentro de unos días pienso ponerme al cien para publicar cosas interesantes, a la mejor dentro de estas publicaciones encuentras algo que te sea de utilidad.
Saludos.

JavaFX

pues estare pendiente, de tus publicaciones gracias.

JavaFx

fijate que tengo una duda en mi proyecto no debe crear varias classes que hereden de Application sino de Stage pero no c como hacer esa parte no c si me puedes explicar un poco