屏幕上的JavaFX中心舞台

拉尔斯

我想在屏幕上居中放置一个舞台。
这是我尝试过的:

public class Test extends Application
{
   @Override
   public void start(final Stage primaryStage)
   {
       Button btn = new Button();
       btn.setText("Say 'Hello World'");
       btn.setOnAction(new EventHandler<ActionEvent>()
       {
          @Override
          public void handle(ActionEvent event)
          {
            System.out.println("Hello World!");
          }
        });
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.centerOnScreen();
        primaryStage.show();
   }

   public static void main(String[] args)
   {
       launch(args);
   }
}

调用centerOnScreen()后,舞台过高。它似乎无法正常工作。我需要自己计算x和y pos吗?或者如何正确使用此功能?

宇智波

的默认实现centerOnScreen()如下:

Rectangle2D bounds = getWindowScreen().getVisualBounds();
double centerX = bounds.getMinX() + (bounds.getWidth() - getWidth())
                                           * CENTER_ON_SCREEN_X_FRACTION;
double centerY = bounds.getMinY() + (bounds.getHeight() - getHeight())
                                           * CENTER_ON_SCREEN_Y_FRACTION;
x.set(centerX);
y.set(centerY);

在哪里

CENTER_ON_SCREEN_X_FRACTION = 1.0f / 2;
CENTER_ON_SCREEN_Y_FRACTION = 1.0f / 3;

centerY 总是将舞台设置为比中心高一点。

要将舞台定位在精确的中心,可以使用您设置的自定义X和Y值

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {

        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction((ActionEvent event) -> {
                System.out.println("Hello World!");
        });
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        Scene scene = new Scene(root, 300, 250);
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
        Rectangle2D primScreenBounds = Screen.getPrimary().getVisualBounds();
        primaryStage.setX((primScreenBounds.getWidth() - primaryStage.getWidth()) / 2);
        primaryStage.setY((primScreenBounds.getHeight() - primaryStage.getHeight()) / 2);
    }

    public static void main(String[] args) {
        launch(args);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX在ViewModel上使用舞台

来自分类Dev

JavaFX检测舞台屏幕位置的变化

来自分类Dev

JavaFX检测舞台屏幕位置的变化

来自分类Dev

屏幕上的CSS中心页面

来自分类Dev

屏幕上的Android ViewPager中心项

来自分类Dev

软件中心卡在加载屏幕上

来自分类Dev

小屏幕上的中心导航栏品牌

来自分类Dev

舞台的JavaFX背景颜色?

来自分类Dev

JavaFx:让舞台专注于按键

来自分类Dev

舞台的 JavaFx 反色

来自分类Dev

Vue-Konva的中心舞台

来自分类Dev

iOS如何在UITableViewController上向屏幕中心添加视图并将其粘贴到屏幕中心?

来自分类Dev

子类化JavaFX舞台/场景

来自分类Dev

JavaFX中的隐形舞台/场景

来自分类Dev

JavaFX - MeshViews 在屏幕上不可见

来自分类Dev

活动屏幕上的PyQt4中心窗口

来自分类Dev

数学帮助-调整相机中心以在屏幕上保留图形

来自分类Dev

以编程方式在中心屏幕上设置LinearLayout的项目

来自分类Dev

libGdx:比屏幕大的可滚动舞台

来自分类Dev

将屏幕坐标转换为舞台坐标

来自分类Dev

JavaFX 8:舞台插图(窗饰厚度)?

来自分类Dev

如何从JavaFX的内部舞台获取TextField?

来自分类Dev

获得除舞台以外的散焦事件-JavaFX

来自分类Dev

没有酒吧的舞台(javafx)

来自分类Dev

用JavaFx中的Escape按钮关闭舞台

来自分类Dev

JavaFX MediaPlayer-舞台大小

来自分类Dev

忽略鼠标单击的舞台边框javafx

来自分类Dev

用JavaFx中的Escape按钮关闭舞台

来自分类Dev

舞台图标 javafx 中的 NullPointerException 错误