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

iText Output Missing Unicode Characters
Regex optional matching
Android Studio Start Failed: fatal error initializing 'com.intellij.util.net.ssl.certificatemanager'
Output of generating new string array does n't come as expected
Android sqlite database getallRows() checking for null gives error [duplicate]
Trying to call on a superclass method, but pass a subclass's parameters?
If my game has three lives, how do I subtract one life if the player gets an answer incorrect?
Table with a for loop and formatting
javax.xml.ws.WebServiceException: java.io.IOException: Error writing to server Tomcat 8
list all pythagorean triplets in java
Immutability and synchronization in Java
Setting max date in calenderView to a specific date
Find how many of one element is in a 2D array
Is this correctly writing to a text file?
Differences between webservice and web-application internal implementation
passing and displaying json data between activities not working?

Categories

HOME
listview
debugging
keras
zeromq
server
deezer
lodash
react-router
jira
sqlite3
v8
jxls
ip
enterprise-library-5
convolution
networkx
awesome-wm
spring-kafka
php-7.1
n-gram
vb.net-2010
static-libraries
dtrace
designer
clearcase-ucm
workload-scheduler
fatal-error
transformation
immutable.js
ehcache
accessor
bootstrap-tour
tibco-mdm
restful-authentication
filezilla
saas
wtx
compatibility
srcset
gsoap
tinymce-4
preg-match-all
asset-pipeline
geopositioning
mpmediaquery
android-ble
retina-display
leading-zero
temporary-files
tasker
gzipstream
botbuilder
heightmap
unixodbc
netcdf4
rainbowtable
osx-mavericks
filepicker
jquery-nestable
ionicons
powercli
sqlclient
lift-json
memory-alignment
epson
linode
migradoc
angular-strap
xcb
firmata
libpng
database-optimization
pcf
gridview-sorting
contact-list
fadeout
php-parse-error
historian
teamcity-8.0
ora-00900
jmeter-maven-plugin
fluid-dynamics
sortedlist
lustre
nsmutabledictionary
jscript.net
nsbutton
p4java
cloud-connect
java.nio.file
floating-point-precision
jsctypes
coverflow
ruby-datamapper
bulkloader
easy-install
ora-00911
eclipse-memory-analyzer
gwt-rpc
limejs
eventlistener
subgurim-maps
genshi
file-comparison
calling-convention
bespin
anti-piracy
ugc
3gp

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