Foro de elhacker.net

Programación => Java => Mensaje iniciado por: nolasco281 en 23 Abril 2015, 14:18 pm



Título: Consulta JavaFx
Publicado por: nolasco281 en 23 Abril 2015, 14:18 pm
Hola a todos.

Tengo la siguiente consulta es estado tratando de programar en javaFx pero la verdad se me hace un poco confuso.

Ya que he visto métodos en los que programan cada control con código hasta los paneles etc.

Luego encontré que lo hacen con javafx scene builder y asi evitar crear los controles a mano pero hay que hacerlo bajo un archivo fxml, y me ha dado muchos errores de compilación.

Y luego encontré que netbeans trabajaba con una herramienta llamada JavafX Composer parecida a la swing pero el problema que esta herramienta solo trabaja con Fx 1.xx obsoleto.
Mi consulta es si saben de alguna herramienta que sea parecida a swing sin tanta complicación.

Si la hayo comento gracias y tal vez puedan ayudarme saludos.


Título: Re: Consulta JavaFx
Publicado por: Usuario Invitado en 23 Abril 2015, 15:59 pm
Hola,

Cuando JavaFX nació (no JavaFX script), se creaban las GUI's con código Java, como en el caso de Swing. Luego, con versiones posteriores de JavaFX, se creó un lenguaje basado en XML que se llama FXML. Ésta forma de crear GUI's es mucho más práctica y eficiente desde el punto de vista de delegación de actividades y la fácil implementación del patrón MVC.

Cuando creas una aplicación JavaFX con FXML, tienes en primera instancia 2 capas: Vista y Controlador. Por ejemplo:

Código
  1. <AnchorPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="net.elhacker.javafxdemo.controllers.HelloWorldController">

Fíjate en el atributo fx:controller. Aquí, debes de indicar la ruta del controlador de dicha vista. En el caso, anterior:

Código
  1. package net.elhacker.javafxdemo.controllers;
  2.  
  3. public class HelloWorldController { /* ... */ }

Ahora, la forma de referenciar los controles FXML en el controlador, se hace a base de identificadores y anotaciones. Por ejemplo, en el FXML tienes un botón:

Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <?import javafx.scene.control.*?>
  4. <?import java.lang.*?>
  5. <?import javafx.scene.layout.*?>
  6.  
  7. <StackPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
  8. fx:controller="net.elhacker.javafxdemo.controllers.HelloWorldController">
  9.   <children>
  10.      <Button fx:id="btnHello" mnemonicParsing="false" text="Click me!" />
  11.   </children>
  12. </StackPane>

Fíjate en el atributo fx:id, su valor identifica al elemento. Por ello, podemos referenciarlo en nuestro controlador muy fácilmente:

Código
  1. public class HelloWorldController {
  2. @FXML private Button btnHello;
  3. }

Para asignarle un método cuando se produzca un evento en el botón, solo debemos especificar el atributo onAction="#nombremétodo":

Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <?import javafx.scene.control.*?>
  4. <?import java.lang.*?>
  5. <?import javafx.scene.layout.*?>
  6.  
  7.  
  8. <StackPane prefHeight="300.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
  9. fx:controller="net.elhacker.javafxdemo.controllers.HelloWorldController">
  10.   <children>
  11.      <Button mnemonicParsing="false" text="Click me!" onAction="#btnHelloAction" />
  12.   </children>
  13. </StackPane>

Y en nuestro controlador:

Código
  1. public class HelloWorldController {
  2. @FXML private Button btnHello;
  3.  
  4. @FXML public void btnHelloAction(ActionEvent e) {
  5. // hacer algo
  6. }
  7. }


Usar FXML es la mejor forma de trabajar con JavaFX. Además, es la forma recomendada por Oracle.


Saludos.


Título: Re: Consulta JavaFx
Publicado por: nolasco281 en 23 Abril 2015, 16:20 pm
Creo que voy entendio muchas gracias.

Si me erredo con algo pregunto.

Saludos.


Título: Re: Consulta JavaFx
Publicado por: HunterLuis en 30 Abril 2015, 16:40 pm
Hola gus una pregunta tenes algun canal en youtube que estes impartiendo para poder comprender mejor todo lo relacionado con java fx porfa si tenes algun canal mandanos el link para poderlo ver. gracias