I came across some documents on internet that in javafx you can apply controller to only parent element.
I have a javafx application (built with scenebuilder, eclipse) which has basic structure like this :
SplitPane { AnchorPane { } AnchorPane { GridPane { Pane { Label { } } Pane { Label { } } } } } I want to change the values of those labels at runtime. But it is throwing java.lang.NullPointerException. My assumption why this is hapening is I'm applying controller to split pane and the labels are not direct children of it so I can't access them.
So questions are : 1) Is my assumption correct ? If not where I'm wrong or missing something ?
2) How to access the labels ?
3) Can I use controller for inner elements (not parent) ?
Thanks in advance, and sorry if the question doesn't make any sense, I'm very very new to javafx.
UPDATE : HERE'S THE CODE i'M USING AND EXCEPTION STACK TRACE :
public class Controller implements Initializable { @FXML private SplitPane splitPane; @FXML private AnchorPane anchorPane1; @FXML private AnchorPane anchorPane2; @FXML private GridPane gridPane; @FXML private static Label z1; @FXML private static Label z2; private HashMap<Integer,Label> zoneLabelNames = new HashMap<Integer,Label>(); public Controller() { // I have around 20 such labels which's value i'm setting using a loop. For now I've writter two only. zoneLabelNames.put(0, z1); zoneLabelNames.put(1, z2); new Thread(() -> { while(true) { try { //some logic to generate new values which will update labels Platform.runLater(() -> { //here I'm actually setting values in loop, for now I wrote only two labels. for(int i =0;i<2;i++) { zoneLabelNames.get(i).setText("newly generated value"); // nullPointerException at this line } }); } catch(Exception e) { e.printStackTrace(); } } }).start(); }
SplitPane. Then get its children. Then get theAnchorPanewith withchildren.size > 0. Then get theGridpane. Then get all of itsPane. Finally get thePane'schild. I would not recommend this approach. You should assign each node afx:id.getChildren()method forSplitPane. Also I've assignedfx:idto each element, to eachSplitPane,AnchorPane,GridPane,PaneandLabel. Still getting thenullPointerException.SpltPane.getItems?staticon theLabels?