2015-11-06 47 views
0

我是Java中的中間人,對JavaFX來說相當新穎。我正在開發一個在JavaFX 8中使用BorderPane的應用程序。我在BorderPane底部有兩個按鈕。如何在窗口大小調整時自動調整BorderPane上的按鈕大小?

  1. 我想放置/對齊按鈕在BorderPane的底部部分的中心,但我不知道執行這項工作的功能。我是用努力:

Bpane.setAlignment(bttmBttn,Pos.BOTTOM_CENTER)

,但沒有奏效。我希望他們隨時都能成爲中鋒。它看起來像這樣:

enter image description here

  • 我希望能夠自動調整的按鈕作爲窗口調整大小。截至目前按鈕保持爲窗口本身之間的相同差距擴大哪種使得它看起來是這樣的:
  • enter image description here

    回答

    0

    要在BorderPane的底部的中心對齊按鈕,一個簡單而方便的方法是使用HBox作爲兩個按鈕的父容器。

    HBox box = new HBox(10, button1, button2); // 10 is spacing 
    box.setAlignment(Pos.CENTER); 
    borderPane.setBottom(box); 
    

    因爲,你想要的按鈕來展開,當你擴展屏幕,你可以爲這些按鈕HGROW到Priority.ALWAYS

    HBox.setHgrow(button1, Priority.ALWAYS); 
    HBox.setHgrow(button2, Priority.ALWAYS); 
    

    您還必須通過調用刪除的按鈕maxSize約束:

    button1.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
    button2.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
    

    有一個小問題,用這種方法。按鈕將捕捉整個可用區域,我們不希望這樣。擺脫它的簡單方法是在HBox的開始和結尾添加兩個固定長度的透明矩形。


    MCVE

    import javafx.application.Application; 
    import javafx.geometry.Pos; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Button; 
    import javafx.scene.layout.BorderPane; 
    import javafx.scene.layout.HBox; 
    import javafx.scene.layout.Priority; 
    import javafx.scene.paint.Color; 
    import javafx.scene.shape.Rectangle; 
    import javafx.stage.Stage; 
    
    public class Main extends Application { 
    
    
        @Override 
        public void start(Stage primaryStage) { 
    
         Button button1 = new Button("Button 1"); 
         Button button2 = new Button("Button 2"); 
    
         button1.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
         button2.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE); 
    
         Rectangle rect1 = new Rectangle(60, 20); 
         rect1.setFill(Color.TRANSPARENT); 
         Rectangle rect2 = new Rectangle(60, 20); 
         rect2.setFill(Color.TRANSPARENT); 
    
         HBox box = new HBox(10, rect1, button1, button2, rect2); 
         box.setAlignment(Pos.CENTER); 
         HBox.setHgrow(button1, Priority.ALWAYS); 
         HBox.setHgrow(button2, Priority.ALWAYS); 
    
         BorderPane root = new BorderPane(); 
         root.setBottom(box); 
    
         Scene scene = new Scene(root, 300, 250); 
    
         primaryStage.setTitle("Main Stage"); 
         primaryStage.setScene(scene); 
         primaryStage.show(); 
        } 
    
        public static void main(String[] args) { 
         launch(args); 
        } 
    } 
    
    +0

    @ItachiUchihaThanks很多。這有幫助 – Auro

    相關問題