Tenemos la mejor solución que hemos encontrado on line. Esperamos que te resulte de mucha ayuda y si quieres compartir alguna mejora hazlo con total libertad.
Solución:
Antes de que entiendas qué Node
Es decir, también es importante, en primer lugar, comprender qué Scene Graph
es en JavaFX
.
Las aplicaciones JavaFX constan de un Stage
y un Scene
o varias escenas. La etapa es el contenedor de nivel superior de su aplicación. Por otro lado, la escena (s) contiene todo el contenido (elementos de la interfaz de usuario) de su aplicación (si su aplicación tiene solo una “página”) o el contenido de una de las “páginas” de su aplicación, y existe en /en un escenario. (Para ser claros aquí, por página me refiero a con qué interactúa el usuario, por ejemplo, una página de inicio de sesión).
The Scene Graph is a graphical illustration of how all the stuff in your scene are laid out. This graph is represented in the form of a tree data structure.
A Node is an item in the scene graph.
Creo que esta imagen explica esto claramente.
Ejemplo de un nodo es un Control
, que es cualquier cosa que pueda ser manipulada por el usuario, por ejemplo, TextField, Button, TextArea
Autor de la foto
A Node
es el abstract
superclase de los elementos gráficos de los que están “hechos” los gráficos de escena.
Algunos ejemplos de clases heredadas de Node
:
TextField
AnchorPane
Canvas
Group
VBox
Button
Label
- …
Inyectando un Node
con el FXMLLoader
id hecho de esta manera:
- Cree un campo en el controlador asociado con el fxml con un tipo apropiado (es decir, se puede asignar cualquier tipo al elemento que desee inyectar). Este campo debe ser accesible por el
FXMLLoader
lo que significa que tiene que serpublic
o anotado con el@FXML
anotación. - Añade el
id
attribute desde el espacio de nombres fxml (probablemente usando el prefixfx
) al elemento del archivo fxml que se debe inyectar. El valor de eso attribute es el nombre del campo en el controlador.
Ejemplo
fxml
....
....
Controlador
....
@FXML
private TextField myTextField;
....
El FXMLLoader
utiliza esta información para asignar el objeto que crea para ese elemento fxml al campo antes de que el controlador initialize
se llama al método.
Puede encontrar un ejemplo completo / tutorial extendido que incluye inyección aquí: https://docs.oracle.com/javase/8/javafx/fxml-tutorial/fxml_tutorial_intermediate.htm#JFXMG153
Ésta es una pregunta antigua, pero se responde de forma abstracta. “¿Qué es un nodo?” y “para comprender qué es un nodo, primero debe comprender qué es un escenario-gráfico”. Un nodo es la clase abstracta de nivel más alto de la que se deriva casi todo lo que se muestra gráficamente en una GUI. Su superclase es Object. En la imagen mostrada por Ojonugwa Ochalifu hay un escenario que contiene una escena que contiene varios nodos que contienen otros nodos. La imagen que se muestra de una GUI plantea la pregunta “¿Cómo se crea esto?”.
Para una comprensión general, aquí están los JavaDocs para Stage, Scene y EventTarget.
En javafx doc Stage https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Stage.html
y escena https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Scene.html
Tanto Stage como Scene heredan la misma interfaz, EventTarget y Pane, Control y una larga lista de clases. https://docs.oracle.com/javase/8/javafx/api/javafx/event/EventTarget.html
También recomiendo mirar el código fuente de las clases que está utilizando. Ayudará a proporcionar información sobre el comportamiento de las clases que heredan de node. Por ejemplo, la documentación de JavaFX menciona que podría existir un error al mostrar una imagen. Asegurarse de que este error no ocurra en una interfaz de usuario requiere pruebas exhaustivas. Otra información, como cómo acceder al gráfico con técnicas de subprocesos múltiples, requiere comprender el “cómo” y el “qué” utiliza una clase.
El Scene-Graph está contenido en el escenario y está compuesto por cualquier subclase de nodo. Algunos nodos, como Panes, pueden tener hijos. Un niño sigue siendo un nodo. Los niños están contenidos en una estructura que puede contener otros nodos que también pueden tener niños. Por tanto, la gráfica es muy parecida a una array o árbol no binario. También es importante comprender que: El gráfico de escena es un gráfico no direccional, lo que significa que un niño puede acceder a su padre; un hijo solo puede tener uno de los padres; pero puede tener un número ilimitado de hijos. El método getParent () proporciona acceso a un padre de nodos.
Imagen del gráfico de escena
Tenga en cuenta que, en esencia, la estructura del gráfico es multidimensional. array. O en otras palabras, un array que pueden contener otras matrices de elementos que heredan de Node, o nodos como ImageViews, Buttons, etc. Las matrices como los nodos son Panes, Canvas, etc. que pueden contener otros nodos.
Es importante comprender esto cuando se trata de probar la automatización y garantizar de manera confiable que una interfaz de usuario muestre lo que debería mostrar.
Un buen libro para comenzar con JavaFX es “Learn JavaFX 8” de Kishori Sharan. https://www.amazon.com/Learn-JavaFX-Building-Experience-Interfaces/dp/148421143X/ref=asc_df_148421143X/?tag=bingshoppinga-20&linkCode=df0&hvadid= creative & hvpos = adposition & hvnerand = o aleatorio} & hvpone = & hvptwo = & hvqmt = e & hvdev = c & hvdvcmdl = devicemodel & hvlocint = & hvlocphy = & hvtargid = pla-4584413736126928 & psc = 1
Aquí tienes las reseñas y valoraciones
Recuerda algo, que te brindamos la opción de valorar este escrito si te fue de ayuda.