Hello,
Iv recently just started using javafx and i am struggling finding a way to access data from a controller class, at the moment i can do it using method.invoke, however it seems like more of a hack than a legitimate clean option of accessing data from a controller class.
try {
URL location = getClass().getResource("newwindow.fxml");
FXMLLoader fxmlloader = new FXMLLoader();
fxmlloader.setLocation(location);
fxmlloader.setBuilderFactory(new JavaFXBuilderFactory());
Parent root = (Parent) fxmlloader.load(location.openStream());
//above defines fxml class from the fxml file
Stage stage = new Stage();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
//above gets stage from fxml file
Method m = fxmlloader.getController().getClass().getMethod("getrows");
System.out.println(m.invoke(fxmlloader.getController()));
}
catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex)
{
Logger.getLogger(EngineEditorController.class.getName()).log(Level.SEVERE, null, ex);
}
the above is how i am accessing the controller class method getrows() at the moment, im looking for a cleaner way either via fxml somehow or a way to pass data to the parent controller, i.e new file window is called from my main window. The controller class code is like so :
public class newWindowController implements Initializable {
@FXML private Button okbutton;
@FXML private Button cancelbutton;
private int rowreturn; //used to return the number of items from controller
private int columnreturn;
@FXML
private void handleOkButtonAction(ActionEvent event) throws IOException {
System.out.println("connected");
}
public int getrows()
{
return rowreturn;
}
If anyone knows if this is the correct way to access data from a controller class or knows a better way any help would be appreciated, it doesent seem to be well documented by oracle yet...