2015-12-13 28 views
3

在JavaFX中,我想要一個HBox根據其包含的Button子元素(父元素調整爲子元素)自動調整其高度和寬度。如何根據子元素自動調整父節點的大小

默認情況下,發生了以下情況: HBox-width設置爲其最大寬度,使其完全適合其父級StackPane(子級調整爲父級)。就像HERE

以下圖片說明我的問題:


會發生什麼: ex.1

我需要什麼: ex.2


會有人碰巧知道如何完成的描述,使用JavaFX和CSS?

這些都是我的一些代碼片段:

// JavaFX Code 
BorderPane mainPane = new BorderPane(); 

Button button1 = new Button("Button1"); 
Button button2 = new Button("Button2"); 
button1.getStyleClass().add("menuButton"); 
button2.getStyleClass().add("menuButton"); 
HBox buttonParent = new HBox(); 
buttonParent.setId("buttonParent"); 
// buttonParent.autosize(); 
buttonParent.setAlignment(Pos.TOP_LEFT); 
buttonParent.getChildren().addAll(button1, button2); 

mainPane.setCenter(parent); 

/* CSS Code */ 
.menuButton { 
    -fx-background-size: cover; 
    -fx-background-position: center; 
    -fx-border-color: #162338; 
    -fx-border-width: 1px; 
    -fx-pref-width: 100px; 
} 

#buttonParent { 
    -fx-background-color: #000; 
    -fx-border-color: #162338; 
    -fx-border-radius: 3px; 
    -fx-border-insets: -1px; 
    -fx-background-radius: 3px; 
    -fx-padding: 5px; 
} 

非常感謝您!

回答

1

在JavaFX中,子佈局由父佈局節點管理。每個佈局/窗格都有自己的邏輯來管理它的子項,而且大多數佈局在佈置時都會考慮子項的最大最小值。

在你的使用情況,您可以得到由你的第二個圖像中想要的佈局:

buttonParent.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE); 

這將限制父到其子鍵組合首選值的大小。此外,buttonParent(即BorderPane)的父母也將考慮其子女的最大規模。

+0

這真的是實現我的目標的正確方法。非常感謝! –

0

你還沒有提供一個可執行的例子,但我想這應該足以將按鈕的最大寬度設置爲很大。

相關問題