Plusieurs étapes JavaFX en mode plein écran

j'ai une application qui contient deux étapes qui devraient être affichées sur deux écrans différents en mode plein écran. J'ai réussi à positionner les deux étapes sur des écrans séparés, et j'ai essayé de mettre la propriété fullscreen à true sur chaque étape, mais seulement d'entre eux est montré sans décoration. Il est toujours celui qui a la propriété fullscreen dernier qui est affiché en mode plein écran.

N'est-il pas possible dans JavaFX 2.2 d'avoir plusieurs étapes en mode plein écran au même moment de temps?

9
demandé sur jbiversen 2012-10-23 16:36:28

1 réponses

j'ai aussi rencontré ce problème et j'ai trouvé une solution facile(contournement):

nous avons d'Abord besoin de l'id du moniteur principal:

int primaryMon;
Screen primary = Screen.getPrimary();
for(int i = 0; i < Screen.getScreens().size(); i++){
    if(Screen.getScreens().get(i).equals(primary)){
        primaryMon = i;
        System.out.println("primary: " + i);
        break;
    }
}

après cela nous entrons et montrons la scène principale. Il est important de le faire sur le moniteur primaire (pour cacher les barres de tâches et autres).

Screen screen2 = Screen.getScreens().get(primaryMon);
Stage stage2 = new Stage();
stage2.setScene(new Scene(new Label("primary")));
//we need to set the window position to the primary monitor:
stage2.setX(screen2.getVisualBounds().getMinX());
stage2.setY(screen2.getVisualBounds().getMinY());
stage2.setFullScreen(true);
stage2.show();

maintenant la partie de contournement. Nous créons les étapes pour les autres moniteurs:

Label label = new Label("monitor " + i);
stage.setScene(new Scene(label));
System.out.println(Screen.getScreens().size());
Screen screen = Screen.getScreens().get(i); //i is the monitor id

//set the position to one of the "slave"-monitors:
stage.setX(screen.getVisualBounds().getMinX());
stage.setY(screen.getVisualBounds().getMinY());

//set the dimesions to the screen size:
stage.setWidth(screen.getVisualBounds().getWidth());
stage.setHeight(screen.getVisualBounds().getHeight());

//show the stage without decorations (titlebar and window borders):
stage.initStyle(StageStyle.UNDECORATED);
stage.show();
9
répondu rbs 2013-01-09 13:20:50