Полный экран javafx на втором экране - PullRequest
0 голосов
/ 11 сентября 2018

В жизни я не могу помочь с этим. У меня есть экран JavaFX, и я пытаюсь показать полноэкранный режим на своем втором мониторе. Я попробовал следующее, основываясь на других рекомендациях, но безрезультатно. Я знаю, что координаты верны, но на моем ГЛАВНОМ мониторе он работает на весь экран. Пожалуйста, помогите.

if (mainSet.getBoolean("fullScr", false)) {
  int count = mainSet.getInt("MonSel", 0);
  if (count > 0) {
    int i = 0;
    for (Screen screen: Screen.getScreens()) {
      if (count == i) {
        Rectangle2D bounds = screen.getBounds();
        primaryStage.setX(bounds.getMinX());
        System.out.println(bounds.getMinX());
        System.out.println(bounds.getMinY());
        primaryStage.setY(bounds.getMinY());
      }
      i++;
    }
  }
  primaryStage.setFullScreen(true);
}

Первый if проверяет предпочтение, чтобы увидеть, установлен ли полноэкранный режим. 2-й if видит, был ли выбран другой монитор, кроме первого. Это 1, так что это должен быть второй монитор. Программа перебирает все экраны и пытается переместить программу, и ТО перейдет в полноэкранный режим. Я знаю, что координаты такие же, но без кубиков, они все еще идут на весь экран на главном экране. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 11 сентября 2018

Я не знаю, правильно ли я понимаю вашу проблему, но если у вас есть два экрана, зачем переключаться между экранами?Почему бы просто не использовать информацию, связанную с экраном в позиции два / индекс один из ObservableList?Я публикую пример приложения, демонстрирующего, как отображать полноэкранный режим на втором мониторе.

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Screen;
import javafx.stage.Stage;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication257 extends Application
{

    @Override
    public void start(Stage primaryStage)
    {
        ObservableList<Screen> screens = Screen.getScreens();//Get list of Screens
        Button btn = new Button();
        btn.setText("Full Screen - Screen 1");
        btn.setOnAction((ActionEvent event) -> {
            Rectangle2D bounds = screens.get(0).getVisualBounds();
            primaryStage.setX(bounds.getMinX());
            primaryStage.setY(bounds.getMinY());
            primaryStage.setFullScreen(true);
            //primaryStage.setWidth(bounds.getWidth());
            //primaryStage.setHeight(bounds.getHeight());
        });

        Button btn2 = new Button();
        btn2.setText("Full Screen - Screen 2");
        btn2.setOnAction((ActionEvent event) -> {
            if (screens.size() > 0) {
                Rectangle2D bounds = screens.get(1).getVisualBounds();
                primaryStage.setX(bounds.getMinX());
                primaryStage.setY(bounds.getMinY());
                primaryStage.setFullScreen(true);
                //primaryStage.setWidth(bounds.getWidth());
                //primaryStage.setHeight(bounds.getHeight());
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(new VBox(btn, btn2));

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

}
...