I'm beginner with javaFX and i need to change language of the screen. but i have no idea how to reload the screen when the language was changed. The application have a button where have the language available. I want just refresh screen when the user change language.
Here is the start method to show the stage.
@Override
public void start(Stage stage) throws Exception
{
this.stage = stage;
Locale locale = Locale.getDefault();
ResourceBundle rb = ResourceBundle.getBundle("resources/Label",locale);
loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"),rb);
root = (Parent)loader.load();
FXMLDocumentController controller = (FXMLDocumentController) loader.getController();
controller.setMain(this);
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
here is the function to change the language(in the same class with start function),the rb is the new ResourceBundle:
public void refresh(ResourceBundle rb)
{
//change the language here
}
1. I don't want to use the resourceBundle to get value in resource file and set label in scene one by one.like following:
this.btnLabel.setText(rb.getString(key.test));
...
2. I don't want to reload the scene,like following:
public void refresh(ResourceBundle rb)
{
try
{
loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"),rb);
root = (Parent)loader.load();
scene.setRoot(root);
FXMLDocumentController controller = (FXMLDocumentController) loader.getController();
controller.setMain(this);
}
catch(Exception err)
{
err.printStackTrace();
}
}
So do we have a solution to just set the resourceBundle and reload the scene easier?
Thanks and best regards!