在两个大小不同的屏幕上运行应用程序时,JavaFX窗口的大小会调整

时间:2018-10-24 11:53:58

标签: javafx scenebuilder

我已经使用场景生成器在笔记本电脑上创建了JavaFX窗口。但是,当我尝试在具有较大屏幕的工作站上运行JavaFX窗口时,JavaFX应用程序不会自动调整大小,而是显示在屏幕的左上方。 。当笔记本电脑/工作站的屏幕尺寸变化时,是否可以通过任何方式调整应用程序窗口的大小?

2 个答案:

答案 0 :(得分:0)

启动JavaFX应用程序时,可以使用Stage最大化.setMaximized(true)窗口。无论屏幕大小是多少,这都将使其“充满屏幕”。如果这样做,请确保使用可以在不同屏幕尺寸下调整大小的布局。

要获取Stage,可以在.getWindow()上调用Scene并将其转换为当前的Stage。这是一个使用Node node我可以在我的应用程序中访问的示例:

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

答案 1 :(得分:0)

您可以设置一个比率。确定您想要的高度比例和宽度比例。然后获取屏幕的宽度和高度并应用比例。

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);
    }

}