gpt4 book ai didi

JavaFX HBox 对齐

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:09 25 4
gpt4 key购买 nike

我一直在开发一个使用 JavaFX 的软件,但我遇到了一个愚蠢但令人担忧的问题。

在代码的某些部分,我有一个HBox,在它里面有三个项目:一个image,一个label和一个垂直框

问题是我想让 image 左对齐,也就是说,靠近 window 的左边距,而 VBox 靠右对齐,也就是在window 的右边框旁边,我不知道该怎么做。

我试过使用 VBox.setAlignment(Pos.RIGHT_CENTER),但没有成功。

最佳答案

当您想将项目放置在布局的两个角时,这是最常见的对齐问题。

假设您想要:

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"

输出

enter image description here

关于JavaFX HBox 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com