javafx全屏登录窗口控件无法正确对齐

javafx全屏登录窗口控件无法正确对齐,javafx,Javafx,我正在尝试制作一个全屏的登录页面,我在stackoverflow中跟随了另一个页面,使我的登录窗口看起来非常完美,所有控件、按钮等都与中心对齐,但一旦我更改屏幕分辨率,一切都变得不对齐。我如何解决这个问题?我正在使用场景生成器 fxml <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.text.*?> <?import javafx.geometry.*?> <?import j

我正在尝试制作一个全屏的登录页面,我在stackoverflow中跟随了另一个页面,使我的登录窗口看起来非常完美,所有控件、按钮等都与中心对齐,但一旦我更改屏幕分辨率,一切都变得不对齐。我如何解决这个问题?我正在使用场景生成器

fxml

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

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

<VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="768.0" prefWidth="1360.0" spacing="20.0" styleClass="background" stylesheets="@../UICoreComponents/JMetroDarkTheme.css" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.MyCompany.attendanceMaster.LoginController">
   <children>
      <Pane prefHeight="200.0" prefWidth="278.0">
         <children>
            <TextField fx:id="userNameTF" layoutX="6.0" layoutY="55.0" prefHeight="25.0" prefWidth="248.0" promptText="Username" />
            <Button layoutX="14.0" layoutY="141.0" mnemonicParsing="false" onAction="#loginBtnClicked" prefHeight="25.0" prefWidth="101.0" text="Login" />
            <Button layoutX="145.0" layoutY="141.0" mnemonicParsing="false" onAction="#clearBtnClicked" prefHeight="25.0" prefWidth="101.0" text="Clear" />
            <Label layoutX="99.0" layoutY="14.0" prefHeight="17.0" prefWidth="62.0" text="Login" textFill="WHITE">
               <font>
                  <Font size="22.0" />
               </font></Label>
            <PasswordField fx:id="passwordTF" layoutX="6.0" layoutY="100.0" prefHeight="25.0" prefWidth="248.0" promptText="Password" />
         </children>
      </Pane>
   </children>
   <padding>
      <Insets left="550.0" right="550.0" />
   </padding>
</VBox>
我的屏幕分辨率是1360X768,完全对齐

**屏幕分辨率为1024X768**

我的最后一个问题是如何制作一个独立于屏幕分辨率运行的javafx应用程序?(我的窗口大小是最大化的,不能调整大小)


谢谢。

您的布局基于
VBox
,然后使用
填充来对齐它。由于所有窗口大小的这些值都相同,因此仅在一种情况下有效


相反,您应该使用
StackPane
或以内容为中心的窗格。在
StackPane
中添加
窗格
,无需任何填充。最后,您需要将场景宽度和高度绑定到
堆栈窗格的值

您的布局基于
VBox
,然后使用
填充
将其对齐。由于所有窗口大小的这些值都相同,因此仅在一种情况下有效


相反,您应该使用
StackPane
或以内容为中心的窗格。在
StackPane
中添加
窗格
,无需任何填充。最终,您需要将场景宽度和高度绑定到
堆栈窗格的值

如何绑定我没有遵循的场景宽度和高度??至少有两种方法,看看如何绑定我没有遵循的场景宽度和高度??至少有两种方法,看看
import com.MyCompany.Network.ClientMaster;
import javafx.application.Application;
import javafx.geometry.Rectangle2D;

import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Screen;
import javafx.stage.Stage;


/**
 *
 * @author shersha
 */
public class Main extends Application {

    @Override
    public void start(Stage stage) throws Exception {
new StaticController();
     new ClientMaster();

        Screen screen = Screen.getPrimary();
Rectangle2D bounds = screen.getVisualBounds();


stage.setX(bounds.getMinX());
stage.setY(bounds.getMinY());
stage.setWidth(bounds.getWidth());
stage.setHeight(bounds.getHeight());
stage.setFullScreen(true);
 stage.setResizable(false);
        Parent root = StaticController.LOGIN_LOADER.getRoot();

        Scene scene = new Scene(root);
        scene.getStylesheets().add("com/MyCompany/UICoreComponents/JMetroDarkTheme.css");

        stage.setScene(scene);
        stage.show();



    }

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

}