2015-05-07 43 views
5

我想使用場景生成器來處理一個複雜的圖形用戶界面我正在工作,爲了簡單起見,我試圖修復窗口的高度和寬度爲用戶的一半屏幕高度。JavaFX場景生成器 - 使用變量值

我遇到的問題是,Scene Builder不會讓我在「Pref Width」和「Pref Height」字段中輸入自定義值,並且只會讓我輸入沿「USE_COMPUTED_SIZE」行的東西

在FXML文件直接看,我發現這一點:

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="0.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sudokusolver.FXMLDocumentController"> 

但我一直無法找到「負無窮大」隨時隨地可能的替代值。我試圖做一些沿線:

Screen.getPrimary().getVisualBounds().getHeight()/2; 

有關如何自定義這樣的值的任何提示或想法?

回答

0

hmmmm的,對吧?

我不知道你在尋找的,如果您需要在窗口的高度和寬度設置爲用戶的屏幕高度和寬度的一半,也有很多它的方式,最簡單的一個是這樣的:

public class Main extends Application 
{ 
    public void start(Stage primaryStage) throws Exception 
    { 

     Parent page = (Parent) FXMLLoader.load(Main.class.getResource("Untitled.fxml")); 

     // get the user's screen size 
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 

     // get width and height of screen and divide them by two 
     double width = screenSize.getWidth()/2; 
     double height = screenSize.getHeight()/2; 

     // set the result to the scene 
     Scene scene = new Scene(page,width,height); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("Window with half size of screen"); 
     primaryStage.show(); 
    } 

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

    } 
} 

另外你說的「固定窗口的高度和寬度......」,如果你的意思是禁止用戶調整窗口的大小,所以你可以使用以下代碼:

primaryStage.setResizable(false); 
+0

So t基本上沒有辦法用Scene Builder或FXML文件來做到這一點?因爲你提供的代碼只是我試圖通過場景生成器實現的示例代碼行的完全充實版本。 – steinybear

+0

@steinybear:幸運的是,不幸的是,FXML文件中無法爲FXML文件設置動態寬度或高度,因此您必須設置其高度和值。 雖然如果您需要,您可以在每個FXML文件的控制器類中更改Windows(階段)的大小。如您所知,我們可以爲每個fxml文件定義一個控制器類,以便您可以爲舞臺設置新的高度或寬度。 請記住,fxml文件是獨立的文件,與您的屏幕沒有任何關係,所以必須通過java代碼來完成您的需求(直到現在,也許在未來Oracle發佈新功能,但我不認爲...) –