-
Bug
-
Resolution: Duplicate
-
P4
-
fx2.1
-
Linux Mint 9, Intel Atom
I am implementing a graphical menu in which I switch between several Scenes. While the following code is working flawlessly on MacOS X, I have refresh problems on Linux. The primaryStage is updated with the new Scene correctly (I can see the title of the form changing), however the new Scene is not drawn until I explicitly interact with the primaryStage, e.g. selecting or moving it.
----------------------
private synchronized void changeScene(GUIScene gs) {
logger.info("ChangeScene: " + gs.getKey());
switch (gs) {
case MAIN_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(MainMenuSceneSing.get().getMainMenuScene());
primaryStage.setTitle(MainMenuSceneSing.get().getMainMenuTitle());
}
});
break;
case PHOTO_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(PhotoMenuSceneSing.get().getPhotoMenuScene());
primaryStage.setTitle(PhotoMenuSceneSing.get().getPhotoMenuTitle());
}
});
break;
case AUDIO_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(AudioMenuSceneSing.get().getAudioMenuScene());
primaryStage.setTitle(AudioMenuSceneSing.get().getAudioMenuTitle());
}
});
break;
case MOVIE_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(MovieMenuSceneSing.get().getMovieMenuScene());
primaryStage.setTitle(MovieMenuSceneSing.get().getMovieMenuTitle());
}
});
break;
}
}
----------------------
----------------------
private synchronized void changeScene(GUIScene gs) {
logger.info("ChangeScene: " + gs.getKey());
switch (gs) {
case MAIN_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(MainMenuSceneSing.get().getMainMenuScene());
primaryStage.setTitle(MainMenuSceneSing.get().getMainMenuTitle());
}
});
break;
case PHOTO_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(PhotoMenuSceneSing.get().getPhotoMenuScene());
primaryStage.setTitle(PhotoMenuSceneSing.get().getPhotoMenuTitle());
}
});
break;
case AUDIO_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(AudioMenuSceneSing.get().getAudioMenuScene());
primaryStage.setTitle(AudioMenuSceneSing.get().getAudioMenuTitle());
}
});
break;
case MOVIE_MENU:
Platform.runLater(new Runnable() {
@Override
public void run() {
primaryStage.setScene(MovieMenuSceneSing.get().getMovieMenuScene());
primaryStage.setTitle(MovieMenuSceneSing.get().getMovieMenuTitle());
}
});
break;
}
}
----------------------