JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдмреЗрд╕рд┐рдХ рд▓реЗрдЖрдЙрдЯ

рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдиреБрд╡рд╛рдж : рд╡реЛрдЬрдЯреЗрдХ рд░реВрдЬрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдореВрд▓ рд▓реЗрдЖрдЙрдЯ рд▓реЗрдЦред

JavaFX рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ GUI рдШрдЯрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВред

рдпрд╣ JavaFX рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЪреМрдерд╛ рд▓реЗрдЦ рд╣реИред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдФрд░ рд╕реАрдирдмреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЕрдм рд╣рдо рд▓реЗрдЖрдЙрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

JavaFX рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╕рднреА рдкреЛрд╕реНрдЯ:

  1. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдЖрд░рдВрдн рдХрд░рдирд╛
  2. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!
  3. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: FXML рдФрд░ рджреГрд╢реНрдп
  4. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдмреЗрд╕рд┐рдХ рд▓реЗрдЖрдЙрдЯ
  5. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рдЙрдиреНрдирдд рд▓реЗрдЖрдЙрдЯ
  6. JavaFX рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓
  7. JavaFX рд╡реАрд╡рд░: JavaFX рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ

рд▓реЗрдЖрдЙрдЯ


рд▓реЗрдЖрдЙрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИред рд▓реЗрдЖрдЙрдЯ рдЗрд╕ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореВрд▓ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЗрдЖрдЙрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЖрдк рджреГрд╢реНрдп рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЛ рд░рдЦ рд╕рдХреЗрдВред рдмреЗрд╢рдХ, рдПрдХ рд▓реЗрдЖрдЙрдЯ рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд▓реЗрдЖрдЙрдЯ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдЖрдЙрдЯ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдЕрдкрдиреЗ рднреАрддрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдмрд╛рд▓ рдШрдЯрдХ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдПрдХ рдПрдХ рдХрд░рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ
  • рдПрдХ рдПрдХ рдХрд░рдХреЗ рдЦрдбрд╝реА
  • рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рдвреЗрд░ рд╣реЛ рдЧрдП
  • рдЧреНрд░рд┐рдб рдореЗрдВ

рдХрдИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд▓реЗрдЖрдЙрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд▓реЗрдЖрдЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддрдм рднреА рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИред

HBox


рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдореЙрдХрдЕрдк рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рдмрд╕ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ, рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВред



FXML рдореЗрдВ, рдЖрдк HBox рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<HBox> <Button>1</Button> <Button>2</Button> <Button>3</Button> <Button>4</Button> </HBox> 

рдЬрд╛рд╡рд╛ рдореЗрдВ, рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 HBox hbox = new HBox(); Button btn1 = new Button("1"); Button btn2 = new Button("2"); Button btn3 = new Button("3"); Button btn4 = new Button("4"); hbox.getChildren().addAll(btn1, btn2, btn3, btn4); 

рд░рд┐рдХреНрддрд┐


рд╣рдорд╛рд░реЗ рддрддреНрд╡ рдЕрдм рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ:



рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд┐рдирд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо HBacing рд░рд┐рдХреНрддрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <HBox spacing="10"> ... </HBox> 

рдпрд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ setSpacing () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

 HBox hbox = new HBox(); hbox.setSpacing(10); 

рдЧрджреНрджреА


рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрднреА рднреА рддрддреНрд╡реЛрдВ рдФрд░ HBox рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ HBox рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:



рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдКрдкрд░, рдиреАрдЪреЗ, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВред

 <HBox> <padding> <Insets top="10" bottom="10" left="10" right="10"/> </padding> ... </HBox> 

рд╡рд╣реА рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 HBox hbox = new HBox(); hbox.setPadding(new Insets(10, 10, 10, 10)); 

VBox


VBox HBox рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХреЛрдВ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╕реНрддрдВрдн рдореЗрдВ рд▓рдВрдмрд╡рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:



рдЖрдк рдЕрднреА рднреА HBox рдХреА рддрд░рд╣ рд░рд┐рдХреНрддрд┐ рдФрд░ рдкреИрдбрд┐рдВрдЧ рдЧреБрдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

VBox рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ HBox рдХреА рддрд░рд╣ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдирд╛рдо рдЕрд▓рдЧ рд╣реИ:

 <VBox spacing="10"> <padding> <Insets top="10" bottom="10" left="10" right="10"/> </padding> <Button>1</Button> <Button>2</Button> <Button>3</Button> <Button>4</Button> </VBox> 

рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ:

 VBox vbox = new VBox(); vbox.setPadding(new Insets(10, 10, 10, 10)); vbox.setSpacing(10); Button btn1 = new Button("1"); Button btn2 = new Button("2"); Button btn3 = new Button("3"); Button btn4 = new Button("4"); vbox.getChildren().addAll(btn1, btn2, btn3, btn4); 

StackPane


рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд╕рдореНрдорд┐рд▓рди рдЖрджреЗрд╢ рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕рдмрд╕реЗ рдиреАрдЪреЗ рд╣реИ, рдЕрдЧрд▓рд╛ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рджрд┐рдЦрд╛рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдКрдкрд░ рдХреБрдЫ рдкрд╛рда рдпрд╛ рдмрдЯрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг FXML рдореЗрдВ StackPane рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

 <StackPane> <ImageView> <Image url="/image.jpg"/> </ImageView> <Button>Click Me!</Button> </StackPane> 

рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг:

 StackPane stackPane = new StackPane(); Image image = new Image(getClass().getResourceAsStream("/image.jpg")); ImageView imageView = new ImageView(image); Button btn = new Button("Click Me!"); stackPane.getChildren().addAll(imageView, btn); 

рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ


рдЖрдк рдЙрдирдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрд░реЗрдЦрдг рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <StackPane alignment="BOTTOM_CENTER"> ... </StackPane> 

рдмреЗрд╢рдХ рдЖрдк рдЬрд╛рд╡рд╛ рдореЗрдВ рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 StackPane stackPane = new StackPane(); stackPane.setAlignment(Pos.BOTTOM_CENTER); 

рд╣рд╛рд╢рд┐рдпрд╛


рдпрджрд┐ рдЖрдк рддрддреНрд╡реЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрдЯреИрдХ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЬрд┐рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <StackPane alignment="BOTTOM_CENTER"> <ImageView> <Image url="/image.jpg"/> </ImageView> <Button> <StackPane.margin> <Insets bottom="10"/> </StackPane.margin> Click Me! </Button> </StackPane> 

рдпрд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ:

 StackPane stackPane = new StackPane(); Button btn = new Button("Click Me!"); stackPane.getChildren().add(btn); StackPane.setMargin(btn, new Insets(0,0,10,0)); 

FlowPane


рдлрд╝реНрд▓реЛ рдкреИрдирд▓ рджреЛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдХреНрд╖реИрддрд┐рдЬ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдпрд╛ рд╡рд░реНрдЯрд┐рдХрд▓ред

рдХреНрд╖реИрддрд┐рдЬ рдореЛрдб рдореЗрдВ, рдЖрдЗрдЯрдо рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ, рдЬреИрд╕реЗ HBox рдореЗрдВред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЕрдзрд┐рдХ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рддрд╣рдд рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рд╕рд┐рд░реНрдл рдПрдХ рд╣реА рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ HBox рдореЗрдВ рд╣реИред

рд╡рд░реНрдЯрд┐рдХрд▓ рдореЛрдб рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди (VBox рдХреА рддрд░рд╣) рдпрд╣ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЕрдзрд┐рдХ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд╣ рдПрдХ рдФрд░ рдХреЙрд▓рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдВрдХрдбрд╝рд╛ рдЗрди рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреИрд╕реЗ рдкреБрдирд░реНрдЧрдард┐рдд рд╣реЛрддреА рд╣реИ:



рдЖрдк рдЗрд╕ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЖрдВрддрд░рд┐рдХ рднрд░рд╛рд╡ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ HBox рдФрд░ VBox рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░рд┐рдХреНрддрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд░рд┐рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд░рд┐рдХреНрддрд┐ рдЧреБрдг рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ / рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд╖реИрддрд┐рдЬ рд░рд┐рдХреНрддрд┐ рдЧреБрдг рдХреЗ рд▓рд┐рдП hgap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЧреБрдг рдХреЗ рд▓рд┐рдП vgap ред

 FlowPane flowPane = new FlowPane(); flowPane.setOrientation(Orientation.VERTICAL); flowPane.setVgap(10); flowPane.setHgap(10); flowPane.getChildren().addAll(...); 

рдПрдлрдПрдХреНрд╕рдПрдордПрд▓ рдореЗрдВ рдлреНрд▓реЛрдкреЗрди рдЙрджрд╛рд╣рд░рдг:

 <FlowPane hgap="10" vgap="10" orientation="VERTICAL"> ... </FlowPane> 

TilePane


рдпрд╣ рд▓реЗрдЖрдЙрдЯ FlowPane рдХреЗ рд╕рдорд╛рди рд╣реИред рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд╕рдХрд╛ рддрд░реАрдХрд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рдЖрдк рдЕрднреА рднреА рдХреНрд╖реИрддрд┐рдЬ рдпрд╛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ vgap рдФрд░ hgap рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рд╣реИред рдлрд╝реНрд▓реЛрдкреИрди рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЯрд╛рдЗрд▓рдкреИрди рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рддрддреНрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдорд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рдкрдВрдХреНрддрд┐рдпреЛрдВ / рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред



рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдореЗрдВ, рд╕рдорд╛рди рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдВрддрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝реНрд▓реЛрдкреИрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ, рдмрд┐рдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рддрддреНрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд╛рдЗрд▓рдкреИрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЯрд╛рдЗрд▓рдкреИрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреНрд▓реЛрдкреЗрди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

 <TilePane vgap="10" hgap="10" orientation="VERTICAL" > 

рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд:

 TilePane tilePane = new TilePane(); tilePane.setVgap(10); tilePane.setHgap(10); tilePane.setOrientation(Orientation.VERTICAL); 

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ


рд▓реЗрдЦ рдиреЗ рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХреАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, JavaFX рдХреЗ рдкрд╛рд╕ рд▓реЗрдЖрдЙрдЯреНрд╕ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд┐рдз рдЪрдпрди рд╣реИред рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЙрдиреНрдирдд рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

Source: https://habr.com/ru/post/hi475882/


All Articles