JavaFX HBox Alignment

时间:2015-04-17 19:30:18

标签: java javafx alignment vbox hbox

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

在代码的某些部分,我有一个HBox,其中有三个项目:imagelabelVBox

我的问题是,我希望image左对齐,即window的左边距旁边,VBox右边对齐,就是window的右边界旁边,我不知道该怎么做。

我尝试使用VBox.setAlignment(Pos.RIGHT_CENTER),但它没有用。

2 个答案:

答案 0 :(得分:32)

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

让我们说你想拥有:

HBox
  |
  ImageView (Left)
  Label (Center)
  VBox (Right)

我非常简单的解决方案是使用两个额外的Regions。 ImageView&标签。另一个在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

答案 1 :(得分:5)

我认为最佳选择可能是从HBox切换到BorderPane。它可让您将物品粘在窗户的任何边缘 另一个选项是GridPane。您可以选择列并更改其&#39; Halignment&#39;财产到&#39;右边&#39;。

顺便说一句,我建议在玩JavaFX时使用JavaFX Scene Builder