Выравнивание вложенных GridPane в JavaFX - PullRequest
1 голос
/ 25 мая 2019

В настоящее время у меня есть GridPane в качестве корня макета, и у меня есть еще один GridPane, который содержит 2 метки.Я пытаюсь, чтобы одна из этих меток была выровнена по левому краю, а другая - по правому краю.

Я пытался использовать GridPane.halignment = "RIGHT", но это не влияет на метки.

Это макет, который у меня сейчас есть: enter image description here

Это макет, который я хочу: enter image description here

Коддля моего макета выглядит так:

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

<?import javafx.scene.layout.*?>
<?import javafx.scene.canvas.Canvas?>
<?import javafx.scene.control.Label?>

<GridPane xmlns="http://javafx.com/javafx"
          xmlns:fx="http://javafx.com/fxml"
          fx:controller="com.bbf.layout.MainLayout">

    <GridPane fx:id="stats" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.halignment="RIGHT" style="-fx-background-color: red;">
        <Label fx:id="frame_count_label" text="Frame: 123" GridPane.columnIndex="0" GridPane.rowIndex="0" style="-fx-background-color: blue;"/>
        <Label fx:id="processing_time_label" text="Processed in 45 ms." GridPane.columnIndex="1" GridPane.rowIndex="0" GridPane.halignment="RIGHT" style="-fx-background-color: green;"/>
    </GridPane>

    <Canvas fx:id="video_canvas" GridPane.columnIndex="0" GridPane.rowIndex="1" width="640" height="480"/>

    <GridPane fx:id="kb_shortcuts" GridPane.columnIndex="0" GridPane.rowIndex="2">
        <Label text="[E] Toggle Overlay" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
        <Label text="[S] Previous Frame" GridPane.columnIndex="1" GridPane.rowIndex="0" />
        <Label text="[D] Next Frame" GridPane.columnIndex="2" GridPane.rowIndex="0" />
    </GridPane>

</GridPane>

Как я могу выровнять эти метки так, как я хочу?GridPane даже идеально подходит для того, что я пытаюсь сделать?Я довольно неопытен в JavaFX, но я знаком с менеджерами компоновки Android.

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Второй столбец во вложенном GridPane был недостаточно большим, чтобы выравнивание имело какой-либо эффект. Простое добавление GridPane.hgrow="ALWAYS" к ярлыку переместило его туда, где я хотел.

0 голосов
/ 25 мая 2019

Вам необходимо указать выравнивание свойство, подобное этому:

<Label alignment="CENTER_RIGHT" text="Processed in 45 ms." GridPane.halignment="RIGHT" GridPane.valignment="CENTER" />
  • Я рекомендую вам использовать Scene Builder , чтобы изучить основы, чем выпопробуйте ввести свой собственный fxml код, если хотите.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...