JavaFX HBox layout buttons

Description

JavaFX HBox layout buttons


import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Main extends Application {

   @Override/*from w  w  w. j ava 2  s  .  co  m*/
   public void start(Stage primaryStage) throws Exception {

      Text text = new Text(50, 50, "JavaFX");
      text.setFont(Font.font("Arial", 20));

      TextPane pane = new TextPane(text);

      primaryStage.setScene(new Scene(pane));
      primaryStage.setTitle("Text Pane");
      primaryStage.show();
   }

   public static void main(String[] args) {

      Application.launch(args);
   }

   private class TextPane extends BorderPane {

      Text text;

      private TextPane(Text text) {
         this.text = text;
         Pane textPane = new Pane(this.text);
         setCenter(textPane);
         setPrefWidth(400);
         setPrefHeight(200);

         // Create Color Radio Buttons
         String[] strColors = { "Red", "Yellow", "Black", "Orange", "Green" };
         Color[] colors = { Color.RED, Color.YELLOW, Color.BLACK, Color.ORANGE, Color.GREEN };
         RadioButton[] rbColors = new RadioButton[strColors.length];

         HBox colorRbPane = new HBox(10);
         colorRbPane.setAlignment(Pos.CENTER);
         colorRbPane.setPadding(new Insets(1, 10, 1, 10));
         colorRbPane.setStyle("-fx-border-color: green");
         setTop(colorRbPane);

         // Create ToggleGroup to sync radio buttons together
         ToggleGroup colorGroup = new ToggleGroup();

         for (int i = 0; i < rbColors.length; i++) {

            rbColors[i] = new RadioButton(strColors[i]);

            // Add radio buttons to ButtonGroup
            rbColors[i].setToggleGroup(colorGroup);

            final int index = i; // Index inside inside lambda
            rbColors[i].setOnAction(e -> text.setFill(colors[index]));

            colorRbPane.getChildren().add(rbColors[i]); // add radioButton to buttonsPane
         }

         // Create Left and Right arrow buttons
         Button btLeft = new Button("left" );
         Button btRight = new Button("right");

         // Add buttons to hBox pane
         HBox arrowBtPane = new HBox(btLeft, btRight);

         // Set arrowPane to the bottom of border pane
         setBottom(arrowBtPane);
         // Configure arrowPane to properly display in BorderPane
         arrowBtPane.setAlignment(Pos.CENTER);
         arrowBtPane.setPadding(new Insets(1, 10, 1, 10));
         arrowBtPane.setSpacing(10);
         arrowBtPane.setStyle("-fx-border-color: green");

         btLeft.setOnAction(e -> text.setX(text.getX() - 10));
         btRight.setOnAction(e -> text.setX(text.getX() + 10));
      }

   }
}



PreviousNext

Related