не могу разместить кнопку в правом нижнем углу - PullRequest
0 голосов
/ 30 сентября 2019

В предпросмотре сцены кнопка выбора находится в точном месте, то есть в правом нижнем углу без пропусков, но когда я запускаю свое приложение, пропуски. Scene builder preview In application view

Кнопка находится на панели, а панель располагается поверх анкерной панели. Как я могу исправить эту проблему? То же самое происходит с другими компонентами, когда я помещаю их в крайнее правое или дальнее дно.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Пожалуйста, изучите образец. Обратите внимание на атрибуты min_width, min_height, pref_width, pref_height, max_width, max_height, vgrow, hgrow в SceneBuiler. Основная концепция заключается в том, что используемый вами тип панели дает вам желаемое расположение. Это не должно быть жестко закодировано.

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

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>


<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <VBox style="-fx-background-color: yellow;">
         <children>
            <StackPane VBox.vgrow="ALWAYS">
               <children>
                  <Button mnemonicParsing="false" text="Menu Button" />
               </children>
            </StackPane>
            <StackPane VBox.vgrow="ALWAYS">
               <children>
                  <Button mnemonicParsing="false" text="Menu Button" />
               </children>
            </StackPane>
            <StackPane layoutX="10.0" layoutY="210.0" VBox.vgrow="ALWAYS">
               <children>
                  <Button mnemonicParsing="false" text="Menu Button" />
               </children>
            </StackPane>
            <StackPane layoutX="10.0" layoutY="276.0" VBox.vgrow="ALWAYS">
               <children>
                  <Button mnemonicParsing="false" text="Menu Button" />
               </children>
               <VBox.margin>
                  <Insets />
               </VBox.margin>
            </StackPane>
            <StackPane layoutX="10.0" layoutY="310.0" VBox.vgrow="ALWAYS">
               <children>
                  <Button mnemonicParsing="false" text="Menu Button" />
               </children>
            </StackPane>
         </children>
      </VBox>
      <VBox style="-fx-background-color: red;" HBox.hgrow="ALWAYS">
         <children>
            <StackPane prefHeight="150.0" prefWidth="200.0" style="-fx-background-color: green;" VBox.vgrow="ALWAYS">
               <children>
                  <GridPane maxHeight="-Infinity" maxWidth="-Infinity" style="-fx-background-color: purple;">
                    <columnConstraints>
                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                    </columnConstraints>
                    <rowConstraints>
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                    </rowConstraints>
                     <children>
                        <Label text="Label" />
                        <TextField GridPane.columnIndex="1" />
                        <TextField GridPane.columnIndex="1" GridPane.rowIndex="1" />
                        <TextField GridPane.columnIndex="1" GridPane.rowIndex="2" />
                        <Label text="Label" GridPane.rowIndex="1" />
                        <Label text="Label" GridPane.rowIndex="2" />
                     </children>
                  </GridPane>
               </children>
            </StackPane>
            <HBox alignment="TOP_RIGHT">
               <children>
                  <Button mnemonicParsing="false" text="Button" />
               </children>
            </HBox>
         </children>
      </VBox>
   </children>
</HBox>
0 голосов
/ 30 сентября 2019

Вы установили ограничения в разделе макета кнопки? Это может быть связано с этим. Проверьте макет x и макет кнопки, а также размер префикса x и y AnchorPane. Если это одно и то же, кнопка должна находиться в левом нижнем углу панели.

...