2015-05-07 25 views
5

Tôi đang cố gắng sử dụng Trình tạo cảnh để xử lý GUI phức tạp mà tôi đang làm việc và vì mục đích đơn giản, tôi đang cố sửa chiều cao và chiều rộng của cửa sổ thành một nửa người dùng chiều cao màn hình.Trình tạo cảnh JavaFX - Sử dụng các giá trị biến

Vấn đề tôi gặp phải là Trình tạo cảnh sẽ không cho phép tôi nhập giá trị tùy chỉnh vào trường "Chiều rộng trước" và "Chiều cao trước" và sẽ chỉ cho phép tôi nhập nội dung dọc theo dòng "USE_COMPUTED_SIZE"

Nhìn thẳng vào file FXML, tôi thấy điều này:

<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"> 

Nhưng tôi đã không thể tìm thấy giá trị thay thế có thể cho "vô cực" bất cứ nơi nào. Tôi đang cố gắng thực hiện điều gì đó dọc theo các dòng:

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

Mọi mẹo hoặc ý tưởng về cách tùy chỉnh giá trị như thế này?

Trả lời

0

hmmmm, okey ...

Tôi không chắc chắn những gì bạn đang tìm kiếm, nếu bạn cần phải thiết lập chiều cao và chiều rộng của cửa sổ của bạn đến một nửa chiều cao màn hình của người dùng và chiều rộng, có rất nhiều cách cho nó, cách đơn giản nhất là như thế này:

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

    } 
} 

Bên cạnh đó bạn đã nói "Khắc phục chiều cao và chiều rộng của cửa sổ ...", Nếu bạn có nghĩa là cấm người dùng thay đổi kích thước cửa sổ để bạn có thể sử dụng mã bên dưới:

primaryStage.setResizable(false); 
+0

Vì vậy, t không có cách nào để làm điều đó với Scene Builder hoặc tập tin FXML, về cơ bản? Bởi vì mã bạn cung cấp chỉ là một phiên bản đầy đủ xác thịt của dòng mã ví dụ của tôi mà tôi đã cố gắng đạt được thông qua Trình tạo cảnh. – steinybear

+0

@steinybear: may mắn thay hoặc không may là không có cách nào để có chiều rộng hoặc chiều cao động cho một tệp FXML, trong tệp FXML, bạn phải đặt chiều cao và giá trị của nó. mặc dù nếu bạn cần bạn có thể thay đổi kích thước của Windows (Giai đoạn) trong mỗi lớp Bộ điều khiển của tệp FXML. như bạn biết chúng ta có thể định nghĩa một lớp điều khiển cho mỗi tệp fxml, vì vậy bạn có thể đặt chiều cao hoặc chiều rộng mới cho Giai đoạn của mình. Hãy lưu ý rằng các tệp fxml là các tệp độc lập không có bất kỳ mối quan hệ nào với màn hình của bạn, vì vậy phải thực hiện nhu cầu của bạn bằng mã java (cho đến bây giờ, có thể trong tương lai, Oracle phát hành các tính năng mới, nhưng tôi không nghĩ ...) –

Các vấn đề liên quan