Java Reference
In-Depth Information
Using FXDNode to load objects
You can use the
FXNode
class directly to load the top-most group encapsulated in the FXD
file. This approach works well when you are interested in loading all objects in the scene graph
as a group quickly, and place them on the scene or in another container node.
var
artwork
= FXDNode {
url: "{__DIR__}SymbolsPS.fxz"
}
Variable
artwork
will be an instance of an orphaned
Node
. Therefore, you can nest
artwork
in a container node, such as
Scene
or another group as follows:
Scene{content:
artwork
}
Accessing Group nodes directly
If your artwork has several nested groups, as do vector graphics exported from SVG or
Illustrator, you can use
FXDNode
to load them directly as shown below:
var
artwork
= FXDNode {
url: "{__DIR__}SymbolsPS.fxz"
}
def flare = artwork.getGroup("flare");
This method returns a
Group
instance of the selected object.
Accessing objects directly
You can also use the
FXDNode
instance to access individual graphics objects nested
inside the FXD file's scene graph by their IDs.
var
artwork
= FXDNode {
url: "{__DIR__}SymbolsPS.fxz"
}
def triangle = artwork.getNode("triangle") as ImageView;
def target = artwork.getNode("target") as ImageView;
The code snippet demonstrates the use of
FXDNode.getNode(id:String):Node
to
retrieve graphics objects using their
id
property value.
Placing non-orphaned nodes
When working with the FXD API to access objects directly, as shown previously, retrieving
nested objects will return non-orphaned nodes that are part of the
FXDNode
scene graph
(considered as a parent container). You will get an error if you attempt to move non-orphaned
nodes into another parent container node. The scene graph engine in JavaFX only allows
nodes to have one parent node and will not automatically re-assign parents. To get around
this, the FXD API offers the
Duplicator
class which automatically returns a cloned,
orphaned copy of the node:


