java - Binding Fields to Controllers in Javafx -
i have built scene in using scene builder , have 2 textfields part of ui, 1 flavor, 1 topping. in controller i've annotated each textfield attribute @fxml. question is: how associate fields in ui attributes in controller class?
the java code looks like:
@fxml private textfield flavorvaluefield; @fxml private textfield toppingvaluefield;
in ui, fields exist in scene, have nothing associated them identifies them. need something? , it's not clear me, how assure binding between field in ui , field in code occur in way want them to.
it's not enough say, works. want understand how code knows bind 1 field in ui attribute in code. ui fields generic. there's no identifier or classifier says, 1 flavor , 1 topping. if "works" how binding happen?
fxmlloader
checks fx:id
attributes in fxml file. if there field visible fxmlloader
in controller matches value of attribute, fxmlloader
attempts assign object created element containing attribute field using reflection.
e.g.
<button fx:id="foo"/> <!-- assigned foo field, if possible --> <button fx:id="bar"/> <!-- assigned bar field, if possible -->
@fxml private button bar; @fxml private object foo;
note values become available when fxml finished loading or in initialize
method, if exists. in initializer/constructor of controller still contain null
.
Comments
Post a Comment