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