我一直在使用JavaFX的軟件,我有一個愚蠢但令人擔憂的問題。JavaFX HBox Alignment
在代碼的某些部分,我有一個HBox
,其中有三個項目:image
,label
和VBox
。
的問題是,我想有image
左對齊,就是旁邊window
的左邊界,並VBox
靠右對齊,就是旁邊的右邊界window
,我不知道該怎麼做。我試過使用VBox.setAlignment(Pos.RIGHT_CENTER)
,但它不起作用。
我一直在使用JavaFX的軟件,我有一個愚蠢但令人擔憂的問題。JavaFX HBox Alignment
在代碼的某些部分,我有一個HBox
,其中有三個項目:image
,label
和VBox
。
的問題是,我想有image
左對齊,就是旁邊window
的左邊界,並VBox
靠右對齊,就是旁邊的右邊界window
,我不知道該怎麼做。我試過使用VBox.setAlignment(Pos.RIGHT_CENTER)
,但它不起作用。
我認爲最好的選擇可能是從HBox
切換到BorderPane
。它讓你可以將物品粘貼到窗口的任何邊緣。
另一種選擇是GridPane
。您可以選擇列並將其'Halignment'屬性更改爲'RIGHT'。
而且,順便說一句,我建議在使用JavaFX的同時使用JavaFX Scene Builder。
當您想要將項目放置到佈局的兩個角落時,這是最常見的對齊問題。
讓我們說你想有:
HBox
|
ImageView (Left)
Label (Center)
VBox (Right)
我很簡單的解決方法是使用兩個額外的Regions
。一個在ImageView & Label之間。另一個在Label和VBox之間。
HBox
|
ImageView (Left)
Region
Label (Center)
Region
VBox (Right)
這些地區必須有HGrow
設定爲Priority.Always
,因此,如果您調整HBox中,這兩個將增長,保持其他因素不變在自己的位置。
FXML例如:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="94.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<ImageView fitHeight="150.0" fitWidth="140.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="http://www.imaginaformacion.com/wp-content/uploads/2010/06/JavaFx.png" />
</image>
</ImageView>
<Region prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
<Label prefHeight="17.0" prefWidth="205.0" text="Label On the Center" />
<Region prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
<VBox alignment="CENTER_RIGHT" prefHeight="94.0" prefWidth="200.0">
<children>
<Label prefHeight="17.0" prefWidth="200.0" text="Label Inside the VBox" />
</children>
</VBox>
</children>
</HBox>
請注意,這兩個地區的HBox.hgrow="ALWAYS"
。
輸出
請告訴我們你的企圖代碼。 – Constant
直覺會說,HBox只是通過'hbox.getChildren()。addall(arg0,arg1,... argk);' – Waterbagel