FXML:在水平Box(HBox)中放置多个元素

问题描述 投票:0回答:1

在Hbox内,我确实希望有一个文本作为标题,以及一个带有submit按钮的搜索栏。

title应该位于左侧,但search bar的右侧是submit按钮。

我的操作方式:

<HBox>  
    <Label text="Penfactory Software"/> 
    <HBox alignment="TOP_RIGHT">
        <TextField fx:id="idSearch"  />
        <Button fx:id="idSubmit" text ="Submit" onAction="#submit"/> 
    </HBox>
</HBox>

Hbox可以为其元素指定一个位置,对齐方式为“ TOP_RIGHT”。问题:只有顶层lvl HBox才能给出对齐方式,换句话说,如果HBox中有一个HBox,则只有top-level HBox会determine放置元素的位置。

我如何实现上述目标,即标题位于左侧,搜索+按钮位于右侧?

java javafx model-view-controller position fxml
1个回答
1
投票

您必须添加Pane。将Pane's最大宽度设置为MAX_VALUE,将Hgrow设置为ALWAYS

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>


<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label text="Hello world!">
         <font>
            <Font size="17.0" />
         </font>
      </Label>
      <Pane maxHeight="-Infinity" maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" />
      <TextField />
      <Button mnemonicParsing="false" text="Button" />
   </children>
</HBox>

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.