JavaFX HBox Alignment
我一直在使用JavaFX开发软件,我有一个愚蠢但令人担忧的问题。
在代码的某些部分中,我有一个 ,并且其中有三个项目:a ,a 和 a 。HBox
image
label
VBox
问题是,我想让对齐到左边,即在左边距旁边,而向右对齐,即在右边框旁边,我不知道该怎么做。image
window
VBox
window
我尝试过使用,但它不起作用。VBox.setAlignment(Pos.RIGHT_CENTER)
我一直在使用JavaFX开发软件,我有一个愚蠢但令人担忧的问题。
在代码的某些部分中,我有一个 ,并且其中有三个项目:a ,a 和 a 。HBox
image
label
VBox
问题是,我想让对齐到左边,即在左边距旁边,而向右对齐,即在右边框旁边,我不知道该怎么做。image
window
VBox
window
我尝试过使用,但它不起作用。VBox.setAlignment(Pos.RIGHT_CENTER)
当您希望将项目放置在布局的两个角上时,这是一个最常见的对齐问题。
假设您想要:
HBox
|
ImageView (Left)
Label (Center)
VBox (Right)
我非常简单的解决方案是使用两个额外的.一个介于ImageView和Label之间。另一个在 Label 和 VBox 之间。Regions
HBox
|
ImageView (Left)
Region
Label (Center)
Region
VBox (Right)
这些区域必须将 HGrow
设置为“优先级”。始终
,以便在调整 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"
输出
我认为最好的选择可能是从 切换到 .它允许您使项目粘附在窗口的任何边缘。
另一个选项是 。您可以选择列并将其“Halignment”属性更改为“右侧”。HBox
BorderPane
GridPane
顺便说一句,我建议在玩JavaFX的同时使用JavaFX Scene Builder。