java


How to get the current item after the FXML initialization?


I tryed to get the current view of my application and set the item of a menu depending of the view, my fxml looks something like that:
<StackPane fx:id="rootNode" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="628.0" prefWidth="1185.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.AccountRegistrationController">
<stylesheets>
<URL value="#../css/jfoenix-components.css" />
<URL value="#../css/main.css" />
</stylesheets>
<children>
<BorderPane prefHeight="740.0" prefWidth="1185.0">
<left>
<!-- this is my menu-->
<fx:include source="Menu.fxml"/>
</left>
<top>
</top>
<center>
</center>
<left>
</left>
</BorderPane>
</children>
And my menu looks like this:
<VBox fx:id="menu" maxWidth="240.0" prefWidth="240.0" minWidth="240.0" fx:controller="controller.MenuController" xmlns:fx="http://javafx.com/fxml/1" styleClass="menu">
<children>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="14.0" minWidth="14.0" prefWidth="14.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="180.0" minWidth="180.0" prefWidth="180.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<JFXButton fx:id="mnFactories" alignment="TOP_LEFT" prefHeight="35.0" prefWidth="180.0"
styleClass="menu-item" text="Fábricas" GridPane.columnIndex="1" onAction="#goTo"/>
<FontAwesomeIconView glyphName="INDUSTRY" glyphStyle="-fx-fill: rgb(93, 135, 156)" size="14px"/>
</children>
</GridPane>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="14.0" minWidth="14.0" prefWidth="14.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="180.0" minWidth="180.0" prefWidth="180.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<JFXButton fx:id="mnProducts" alignment="TOP_LEFT" prefHeight="35.0" prefWidth="180.0"
styleClass="menu-item" text="Productos" GridPane.columnIndex="1" onAction="#goTo"/>
<FontAwesomeIconView glyphName="SUITCASE" glyphStyle="-fx-fill: rgb(93, 135, 156)" size="14px"/>
</children>
</GridPane>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="14.0" minWidth="14.0" prefWidth="14.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="180.0" minWidth="180.0" prefWidth="180.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<JFXButton fx:id="mnTags" alignment="TOP_LEFT" prefHeight="35.0" prefWidth="180.0"
styleClass="menu-item" text="Tags" GridPane.columnIndex="1" onAction="#goTo"/>
<FontAwesomeIconView glyphName="TAG" glyphStyle="-fx-fill: rgb(93, 135, 156)" size="14px"/>
</children>
</GridPane>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="14.0" minWidth="14.0" prefWidth="14.0"/>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="180.0" minWidth="180.0" prefWidth="180.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<JFXButton fx:id="mnUsers" alignment="TOP_LEFT" prefHeight="35.0" prefWidth="180.0"
styleClass="menu-item" text="Usuarios" GridPane.columnIndex="1" onAction="#goTo"/>
<FontAwesomeIconView glyphName="USERS" glyphStyle="-fx-fill: rgb(93, 135, 156)" size="14px"/>
</children>
</GridPane>
</children>
So now when I clicked for example in "Usuarios" option the class of this item change the class to active-menu-item.
First I manage my fxml views with this functions:
#FXML
public void goTo (ActionEvent evt) {
updateActiveItem(((JFXButton)evt.getSource()));
}
private void updateActiveItem (JFXButton item) {
if (item.getStyleClass().contains("active-menu-item")) {
// Es la página actualmente mostrada
} else {
setView(item.getText(), item);
}
}
public boolean setView(String option, Node node) {
try {
if (Main.getSceneObjects() == null) {
System.out.println("No se encontraron los elementos necesarios para cargar la vista");
return false;
} else {
Parent root = (Parent) Main.getSceneObjects()[0];
Stage stage = (Stage) node.getScene().getWindow() ;
switch (option.toLowerCase()) {
case "productos":
root = FXMLLoader.load(getClass().getResource("../view/fxml/products.fxml"));
break;
case "tags":
root = FXMLLoader.load(getClass().getResource("../view/fxml/tags.fxml"));
break;
case "usuarios":
root = FXMLLoader.load(getClass().getResource("../view/fxml/accountRegistration.fxml"));
break;
default:
System.out.println("La opción seleccionada no existe");
break;
}
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
setCurrentItem(node);
return true;
}
} catch (IOException ex) {
return false;
}
}
And finally set the current option active with this function:
public void setCurrentItem (Node node) {
for (Node child : menu.getChildren()) {
int index = 0;
for (Node _child : ((GridPane)child).getChildren()) {
if (index == 0) {
if (_child.getStyleClass().contains("active-menu-item")) {
_child.getStyleClass().remove("active-menu-item");
_child.getStyleClass().add("menu-item");
}
} else {
if (_child.getClass().toString().contains("class de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView")) {
if (((FontAwesomeIconView)_child).getGlyphStyle().contains("-fx-fill: #FFF")) {
((FontAwesomeIconView)_child).setGlyphStyle("-fx-fill: rgb(93, 135, 156)");
}
}
}
index ++;
}
}
node.getStyleClass().add("active-menu-item");
for (Node currentChild : ((GridPane)node.getParent()).getChildren()) {
System.out.println("ENTROO en el for del boton");
if (currentChild.getStyleClass().contains("glyph-icon")) {
((FontAwesomeIconView)currentChild).setGlyphStyle("-fx-fill: #FFF");
}
}
}
But when I set the scene, the current active option of the menu no change, what happened?, I need to do something else or this cant work because I use two controllers in every fxml?

Related Links

JavaFx ComboBox valueProperty().addListener(new ChangeListener<String>() progressively repeated
Skip list remove and print method in java
How to start new line after press keyboard key is “ENTER” in SWT table cell?
ECIES encryption/decryption Java
For JSONArray parsing: TRY inside LOOP or LOOP inside TRY?
InstanceAlreadyExistsException coming from kafka consumer
Pong Game in java
Unable to Configure log4j2(v2.5) using dynamically changing configuration read from properties file
PostgreSQL function taking too long to complete execution
Need help positioning in java
Creating an ArrayList that outputs into 2 types [closed]
Android studio - transformClassesWithDexForDebug error
Ading Double type values [duplicate]
Wicket - getlist() in List printing multiple times
JMX - remote management into docker-compose container - Failed to retrieve RMIServer stub
Can I create more columns in the array 2D?

Categories

HOME
ms-access
winforms
webpack
single-sign-on
view
razor
frameworks
convolution
networkx
circular-dependency
commonmark
ups
decomposition
database-replication
oxyplot
autoconf
sox
core-text
pass-by-reference
facebook-access-token
ping
tasklet
newline
flink-streaming
microsoft-chart-controls
.net-4.0
oracle-fusion-middleware
vsts-build-task
wixsharp
az-application-insights
greenrobot-eventbus
tasker
ws-security
nomethoderror
isbn
outlook-api
.net-4.6.2
btrace
youcompleteme
typescript1.8
fancybox-2
svmlight
jxcore
kbuild
nsarray
dtexec
mcafee
color-profile
webdriverjs
specrun
httplistener
savon
multiple-regression
ready-api
master-slave
whois
pickadate
ios4
ford-fulkerson
xna-4.0
teamcity-8.0
thredds
marching-cubes
quicklisp
event-bubbling
operation
apache-commons-fileupload
asp.net-dynamic-data
cctv
preferences
php-5.4
eol
uitouch
expected-exception
rtmfp
cloud-connect
prettify
xsockets.net
.aspxauth
quartz-graphics
html4
cassini-dev
clipper
trusted
gdata-api
manchester-syntax
javaspaces
labwindows
twrequest
windows-phone-7.1.1
subgurim-maps
blackberry-playbook
yui-datatable
h.323
mozilla-prism
gin
vc90
mtj
anti-piracy
noscript
geneva-server
commodore

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App