betacode

Руководство JavaFX AnchorPane Layout

  1. AnchorPane Layout
  2. Пример с AnchorPane
  3. Дизайн AnchorPanel с Scene Builder

1. AnchorPane Layout

AnchorPane это контейнер (container), довольно похож на BorderPane. BorderPane разделяет его поверхность на 5 отдельных областей, чтобы расположить туда подкомпоненты, когда AnchorPane разделяет его поверхность на 5 областей чтобы поставить анкор (anchor) подкомпонента, заметьте, что 5 областей AnchorPane это всего лишь 5 логических областей, это не настоящие 5 областей.
Подкомпонент находящийся в AnchorPane может поставить анкор (anchor) в один или более логическиъ областей AnchorPane.
Изображение ниже иллюстрирует подкомпонент в AnchorPane, закрепленный на левой и правой стороне AnchorPane. И когда AnchorPane меняет длину (width), длина подкомпонента так же меняется.
Подкомпонент может быть закреплен анкором (anchor) с 4-х сторон AnchorPane:

2. Пример с AnchorPane

BorderPaneDemo.java
package org.o7planning.javafx.anchorpane;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class AnchorPaneDemo extends Application {

   @Override
   public void start(Stage primaryStage) throws Exception {
       AnchorPane root = new AnchorPane();
       Button button1 = new Button("(B1) Top + Left + Right");

       Button button2 = new Button("(B2) Top + Left + Right");
       Button button3 = new Button("(B3) Top + Left + Right");

       Button button4 = new Button("(B4) Top + Left + Right + Bottom");

       // (B1) Anchor to the Top + Left + Right
       AnchorPane.setTopAnchor(button1, 40.0);
       AnchorPane.setLeftAnchor(button1, 50.0);
       AnchorPane.setRightAnchor(button1, 70.0);

       // (B2) Anchor to the Top + Left + Right
       AnchorPane.setTopAnchor(button2, 90.0);
       AnchorPane.setLeftAnchor(button2, 10.0);
       AnchorPane.setRightAnchor(button2, 320.0);

       // (B3) Anchor to the Top + Left + Right
       AnchorPane.setTopAnchor(button3, 100.0);
       AnchorPane.setLeftAnchor(button3, 250.0);
       AnchorPane.setRightAnchor(button3, 20.0);

       // (B4) Anchor to the four sides of AnchorPane
       AnchorPane.setTopAnchor(button4, 150.0);
       AnchorPane.setLeftAnchor(button4, 40.0);
       AnchorPane.setRightAnchor(button4, 50.0);
       AnchorPane.setBottomAnchor(button4, 45.0);

       // Add buttons to AnchorPane
       root.getChildren().addAll(button1, button3, button2, button4);

       Scene scene = new Scene(root, 550, 250);

       primaryStage.setTitle("AnchorPane Layout Demo (o7planning.org)");
       primaryStage.setScene(scene);
       primaryStage.show();
   }

   public static void main(String[] args) {
       launch(args);
   }

}
Запуск примера:

3. Дизайн AnchorPanel с Scene Builder

  • File/New/Other...
Добавить подкомпоненты в AnchorPane:
Anchor:
Закрепить анкором подкомпоненты в стороны AnchorPane:

Руководства JavaFX

Show More