JavaFX Scene Builder - установить прямоугольник с изменяемым размером

Я использую Scene Builder с JavaFX. Я пытаюсь создать боковую панель в своем приложении с другим цветом фона.

У меня есть прямоугольник в AnchorPane, и я хочу, чтобы прямоугольник всегда соответствовал высоте окна. Поэтому, когда я изменяю размер окна, высота прямоугольника должна измениться. По какой-то причине флажок resizable отключен в свойствах прямоугольника.

Если это невозможно с помощью Scene Builder, есть ли другой компонент, который я могу использовать для этой цели, кроме прямоугольника?


person Community    schedule 29.10.2014    source источник


Ответы (1)


вы можете использовать это так. Я надеюсь, что ваша проблема будет решена.

введите здесь описание изображения

Здесь вы можете увидеть панель привязки, которая включает в себя панель границы. В верхнем разделе я добавляю MenuBar, в левом разделе я добавляю VBOX, а в центре есть гистограмма. Нижний колонтитул — это только HBox с меткой внутри.

Я думаю, это самый простой способ получить то, что вы хотите!

Это следующий код:

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

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.chart.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="410.0" prefWidth="599.9998779296875" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <children>
    <AnchorPane prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <children>
        <BorderPane prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <bottom>
            <HBox alignment="CENTER" prefHeight="24.0" prefWidth="600.0" style="-fx-background-color:lightgrey;">
              <children>
                <Label text="This is a Footer Section" />
              </children>
            </HBox>
          </bottom>
          <center>
            <VBox prefHeight="200.0" prefWidth="100.0" style="-fx-background-color:grey;">
              <children>
                <BarChart>
                  <xAxis>
                    <CategoryAxis side="BOTTOM" />
                  </xAxis>
                  <yAxis>
                    <NumberAxis side="LEFT" />
                  </yAxis>
                </BarChart>
              </children>
            </VBox>
          </center>
          <left>
            <VBox alignment="TOP_CENTER" prefHeight="352.0" prefWidth="90.0" style="-fx-background-color:darkgrey;">
              <children>
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
                <Button mnemonicParsing="false" text="SidebarItem" />
              </children>
            </VBox>
          </left>
          <right>
            <VBox prefHeight="352.0" prefWidth="56.0" style="-fx-background-color:darkgrey;" />
          </right>
          <top>
            <MenuBar>
              <menus>
                <Menu mnemonicParsing="false" text="File">
                  <items>
                    <MenuItem mnemonicParsing="false" text="Close" />
                  </items>
                </Menu>
                <Menu mnemonicParsing="false" text="Edit">
                  <items>
                    <MenuItem mnemonicParsing="false" text="Delete" />
                  </items>
                </Menu>
                <Menu mnemonicParsing="false" text="Help">
                  <items>
                    <MenuItem mnemonicParsing="false" text="About" />
                  </items>
                </Menu>
              </menus>
            </MenuBar>
          </top>
        </BorderPane>
      </children>
    </AnchorPane>
  </children>
</AnchorPane>

Лукас Адлер

person Lukas Hieronimus Adler    schedule 29.10.2014
comment
Спасибо за Ваш ответ. Я пытался возиться с этим, но прямоугольник, похоже, работает по-другому. - person ; 29.10.2014
comment
Хорошо, почему важно использовать прямоугольник? @Джон - person Lukas Hieronimus Adler; 29.10.2014
comment
Мне нужно создать боковую панель, которая отличается от остального экрана. Прямоугольник кажется единственным компонентом, задний цвет которого можно изменить. - person ; 29.10.2014
comment
Я работаю над мастером, похожим на экран, и пытаюсь показать прогресс на боковой панели. (например: media-cache-cd0.pinimg. com/236x/0d/1c/55/) - person ; 29.10.2014
comment
Вы можете изменить цвет фона каждого компонента! Для этого вы должны использовать каскадные таблицы стилей! В противном случае вы также можете добавить стили в свой код Java. Вы можете создать компонент и добавить к нему стиль следующим образом: component.addStyle(-fx-background-color:green;); ‹ Вы также можете изменить цвет компонентов на прозрачный стиль.. Я думаю, что было бы проще использовать VBOX вместо прямоугольника!! В противном случае я не могу понять вашу проблему. - person Lukas Hieronimus Adler; 29.10.2014
comment
@john -› Каждый цвет фона можно изменить в JavaFX! - person Lukas Hieronimus Adler; 29.10.2014
comment
Спасибо большое. Собираюсь попробовать это. - person ; 29.10.2014
comment
Да, большое спасибо. Небольшой вопрос: если у меня есть метка с fxid= lbl, как я могу получить к ней доступ из моего класса контроллера? Я хочу изменить тип шрифта с полужирного на обычный. (У меня уже есть событие нажатия кнопки, которое работает нормально, я просто не знаю, как получить доступ к другому компоненту с помощью fxid.) - person ; 29.10.2014
comment
Вы также можете изменить шрифт с помощью CSS -> Вы должны добавить примерно что-то вроде этого :.label { -fx-font-size: 12px; -fx-font-weight: полужирный; } - person Lukas Hieronimus Adler; 29.10.2014
comment
Можете ли вы подключить лейбл к контроллеру? Вы должны добавить в свой класс контроллера @FXML-тег к метке, на которую ссылается. - person Lukas Hieronimus Adler; 29.10.2014
comment
Я добавил фид в метку через Scene Builder. Я также связал класс контроллера. Могу ли я просто напрямую сослаться на него в коде @FXML myLabel.setText("foo") или мне нужно сначала создать ссылку на метку? - person ; 30.10.2014