Изменение размера окна JavaFX при запуске приложения на двух экранах разных размеров - PullRequest
0 голосов
/ 24 октября 2018

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

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете установить соотношение.Определите, какое вы хотите соотношение высоты и ширины.Затем получите ширину и высоту экрана и примените соотношение.

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Screen;
import javafx.stage.Stage;

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

    @Override
    public void start(Stage primaryStage)
    {
        double heightRatio = .25;
        double widthRatio = .30;

        Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();

        double sceneHeight = primaryScreenBounds.getHeight() * heightRatio;
        double sceneWidth = primaryScreenBounds.getWidth() * widthRatio;

        StackPane root = new StackPane();
        Scene scene = new Scene(root, sceneWidth, sceneHeight);

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

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

}
0 голосов
/ 24 октября 2018

Когда вы запускаете приложение JavaFX, вы можете развернуть окно Stage, используя .setMaximized(true).Это заставит его «заполнить экран» независимо от размера экрана.Обязательно используйте макет, который хорошо изменяет размеры экрана при разных размерах, если вы делаете это.

Чтобы получить Stage, вы можете позвонить .getWindow() на Scene и привести его к Stageэто.Вот пример использования Node node, к которому у меня есть доступ в моем приложении:

((Stage) node.getScene().getWindow()).setMaximized(true)

...