加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何集中JavaFX控件

发布时间:2020-12-15 02:56:30 所属栏目:Java 来源:网络整理
导读:更具体地说,为什么我的 JavaFX控件没有居中?这是两个截图,第一个刚开始之后(我将窗口移动到一个更明显的位置,但还没有调整大小),第二个是在调整它以显示我的问题之后.如果你帮我确认它的大小(在所有DPI上),当它第一次显示时,奖励积分: 方便地,相关代码包含
更具体地说,为什么我的 JavaFX控件没有居中?这是两个截图,第一个刚开始之后(我将窗口移动到一个更明显的位置,但还没有调整大小),第二个是在调整它以显示我的问题之后.如果你帮我确认它的大小(在所有DPI上),当它第一次显示时,奖励积分:

方便地,相关代码包含在那些屏幕截图中.如果您仍然需要它作为文本,请转到:

private void initJFXPanel(JFXPanel holder)
{
    {
        {
            rootGrid = new GridPane();
            rootGrid.setAlignment(Pos.CENTER);
            rootGrid.setPadding(new Insets(16));
            rootGrid.setHgap(16);
            rootGrid.setVgap(8);
        }

        interior = holder.getScene();
        if (interior == null)
            holder.setScene(interior = new Scene(rootGrid));
        interior.setRoot(rootGrid);

    }
    {
        statusLabel = new Label("Checking for Updates...");
        statusLabel.setAlignment(Pos.CENTER);
        statusLabel.setTextAlignment(TextAlignment.CENTER);
        rootGrid.add(statusLabel,0);
    }
    {
        progressBar = new ProgressBar();
        progressBar.setProgress(-1);
        progressBar.setPrefWidth(Constants.MAX_WIN_BOUNDS.width / 5d); // 1/5 the width of the screen
        rootGrid.add(progressBar,1);
    }
    {
        downloadButton = new Button("Get it!");
        downloadButton.setAlignment(Pos.CENTER);
        rootGrid.add(downloadButton,2);
    }
    holder.setMinimumSize(new Dimension((int)(rootGrid.getPrefWidth() + .5),(int)(rootGrid.getPrefHeight() + .5)));
    setMinimumSize(holder.getMinimumSize());
}

解决方法

将控件放在VBox(或其他类似的根布局窗格)中,将set the VBox alignment放在中心位置.

布局建议

这是我在JavaFX中开始布局的个人建议(这只是建议而不适用于所有人,你可以接受或留下它):

>您的窗口以及所有控件和布局将自动调整为首选大小.
>让内置布局管理器和布局系统尽可能多地为您进行计算,只需提供获得结果所需的最小布局提示即可.
>坚持只使用JavaFX或仅使用Swing代码,直到您熟悉这两种代码开发风格并真正需要混合它们.
>使用SceneBuilder工具来使用不同的布局并熟悉JavaFX布局机制.
>研究JavaFX layout tutorial.
>回顾presentation on JavaFX layout.
>要将屏幕中央调用stage.centerOnScreen().
>考虑使用Java 8u40的内置对话框支持(发布时).

Hi-dpi支持

看到答案:

> JavaFX 8 HiDPI Support

基于FXML的对话框示例代码

您可以在SceneBuilder中加载以下内容以轻松显示它:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" spacing="8.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label fx:id="updateStatus" text="Checking for Updates..." />
      <ProgressBar fx:id="updateProgress" prefWidth="200.0" progress="0.0" />
      <Button fx:id="updateAction" mnemonicParsing="false" text="Get it!" />
   </children>
   <padding>
      <Insets bottom="16.0" left="16.0" right="16.0" top="16.0" />
   </padding>
</VBox>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读