2015-12-27 59 views
0

我試圖讓一個登錄頁面,這是全屏幕,我也跟着另一個question的計算器,使我的登錄窗口,它看起來完美的所有控制,按鈕等對準中心,但隨着一旦我改變屏幕分辨率,每一件事情都變得不對齊。我怎樣才能解決這個問題?。我現在用現場建設者JavaFX的全屏登錄窗口控件不會allign正確

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> 

Main.java

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

} 

我的屏幕分辨率是1360x768的完美神韻: Screen shot image with out changing my resolution

**屏幕分辨率在1024x768 ** enter image description here

我的最後一個問題是如何才能讓將要運行的屏幕分辨率獨立JavaFX應用程序?(我的窗口尺寸最大化,而不是調整大小)

謝謝。

回答

0

您的佈局基於VBox,然後您使用padding對齊它。由於這些值對於所有窗口大小都是相同的,因此它只能在一種情況下工作。

相反,您應該使用StackPane或以內容爲中心的內容。進入該StackPane,你添加你的Pane,沒有任何填充。最終,您需要將場景寬度和高度綁定到StackPane的值。

+0

如何綁定場景的寬度和高度我沒有遵循? –

+1

至少有兩種方法可以做到這一點,請看http://www.drdobbs.com/jvm/javafx-20-binding/231903245 – hotzst