F XML: расположение нескольких элементов в горизонтальной рамке (HBox) - PullRequest
0 голосов
/ 10 января 2020

В 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". Проблема: только Top lvl HBox может дать выравнивание, иначе говоря, если HBox есть внутри HBox, только top-level HBox определит , где размещаются элементы.

Как мне достичь цели, описанной выше, с заголовком слева и кнопкой поиска + справа?

1 Ответ

1 голос
/ 10 января 2020

Вы должны добавить 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

...