-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add explanation on fx:root #35
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct me if im wrong on any of this 😅
I think can state the difference between using fx:root and not and its implications clearer, for example if we use fx:root construct then the controller is now set programmatically. Here it is set in DialogBox
.
That being said, we can also provide answers for the exercise where MainWindow
can either use fx:root or Stage as root node.
For eg, if use fx:root, we set the controller programmatically in MainWindow
constructor
public MainWindow() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/path/to/MainWindow.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Thank you for the suggestion, I have added a line on this. As for the sample solution, I am not too sure on whether to include it since it was left as an exercise and no solution has been given on previous exercises. |
Thanks for adding! Yep your right, I think that can be another issue for the future as well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good start @JiaXinEu
Added some comments/suggestions.
tutorials/javaFxPart4.md
Outdated
The main difference here is that DialogBox checks `Use fx:root construct` and _does not define a controller class_. Checking this enables the use of the `fx:root` element, allowing you to reference a root element predefined by calling the `setRoot()` method. The controller can be programatically set using the `setController()` method. | ||
|
||
More about `fx:root` on the documentation [Introduction to FXML | JavaFX 2.2](https://docs.oracle.com/javafx/2/api/javafx/fxml/doc-files/introduction_to_fxml.html#root_elements). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The main difference here is that DialogBox checks `Use fx:root construct` and _does not define a controller class_. Checking this enables the use of the `fx:root` element, allowing you to reference a root element predefined by calling the `setRoot()` method. The controller can be programatically set using the `setController()` method. | |
More about `fx:root` on the documentation [Introduction to FXML | JavaFX 2.2](https://docs.oracle.com/javafx/2/api/javafx/fxml/doc-files/introduction_to_fxml.html#root_elements). | |
The main difference here is that we tick the checkbox `Use fx:root construct` and _do not define a controller class_. Ticking this enables the use of the `fx:root` element, allowing you to reference a root element predefined by calling the `setRoot()` method. The controller can be programatically set using the `setController()` method. | |
More about `fx:root` on the documentation [Introduction to FXML | JavaFX 2.2](https://docs.oracle.com/javafx/2/api/javafx/fxml/doc-files/introduction_to_fxml.html#root_elements). |
Reason: checks
can be interpreted as verifies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can/should we also explain why we do the DialogBox differently? Must we do it this way for DialogBox or we are simply illustrating a different technique?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... by calling the
setRoot()
method.
It's not clear if you mean this allows you to call the setRoot()
method or this has the same effect as calling the setRoot()
method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can/should we also explain why we do the DialogBox differently? Must we do it this way for DialogBox or we are simply illustrating a different technique?
This is done differently since DialogBox
is a custom component we build that will be reused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... by calling the
setRoot()
method.It's not clear if you mean this allows you to call the
setRoot()
method or this has the same effect as calling thesetRoot()
method.
Use of the fx:root
element allows us to reference a root element. This root element will be predefined by calling the setRoot()
method before we load()
.
As proposed in #21