JavaFX provides different layout panes for arranging components on them. for example GridPane, BorderPane etc.
This article describes about arranging components on GridPane. GridPane layout manager allows arranging components/controls using overloaded method. ie add.
1. add(controlinstance, colindex, rowindex)
EX: GridPane pane = new GridPane();
pane.add(new Separator(), 0, 0);
the above example code puts the separator on 0th row and 0th column of a gridPane.
2. add(Node controlinstance,int colIndex,int rowIndex,int colSpan,int rowSpan)
EX: GridPane pane = new GridPane();
pane.add(new Separator(),0 , 0, 2, 0);
Following code describes the GridPane with a login screen.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.Separator;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import com.atmecs.utilities.Validations;
public class Main extends Application {
Button buttonLogin;
Button buttonCancel;
TextField textFieldUsername;
PasswordField PasswordFieldPassword;
@Override
public void start(Stage primaryStage) {
initComponents(primaryStage);
}
private void initComponents(Stage primaryStage) {
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(25, 25, 25, 25));
Scene scene = new Scene(gridPane, 320, 230);
primaryStage.setScene(scene);
Text title = new Text("Login");
title.setFont(Font.font("Tahoma", FontWeight.BOLD, 20));
gridPane.add(title, 0, 0, 2, 1);
Label labelUsername = new Label("Username:");
gridPane.add(labelUsername, 0, 1);
textFieldUsername = new TextField();
gridPane.add(textFieldUsername, 1, 1);
Label labelPassword = new Label("Password:");
gridPane.add(labelPassword, 0, 2);
PasswordFieldPassword = new PasswordField();
gridPane.add(PasswordFieldPassword, 1, 2);
buttonLogin = new Button("Login");
buttonCancel = new Button("Cancel");
gridPane.add(new Separator(), 0, 4, 2, 1);
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(buttonLogin);
hbBtn.getChildren().add(buttonCancel);
gridPane.add(hbBtn, 1, 5);
primaryStage.show();
setListeners();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
This article describes about arranging components on GridPane. GridPane layout manager allows arranging components/controls using overloaded method. ie add.
1. add(controlinstance, colindex, rowindex)
EX: GridPane pane = new GridPane();
pane.add(new Separator(), 0, 0);
the above example code puts the separator on 0th row and 0th column of a gridPane.
2. add(Node controlinstance,int colIndex,int rowIndex,int colSpan,int rowSpan)
EX: GridPane pane = new GridPane();
pane.add(new Separator(),0 , 0, 2, 0);
Following code describes the GridPane with a login screen.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.Separator;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import com.atmecs.utilities.Validations;
public class Main extends Application {
Button buttonLogin;
Button buttonCancel;
TextField textFieldUsername;
PasswordField PasswordFieldPassword;
@Override
public void start(Stage primaryStage) {
initComponents(primaryStage);
}
private void initComponents(Stage primaryStage) {
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(25, 25, 25, 25));
Scene scene = new Scene(gridPane, 320, 230);
primaryStage.setScene(scene);
Text title = new Text("Login");
title.setFont(Font.font("Tahoma", FontWeight.BOLD, 20));
gridPane.add(title, 0, 0, 2, 1);
Label labelUsername = new Label("Username:");
gridPane.add(labelUsername, 0, 1);
textFieldUsername = new TextField();
gridPane.add(textFieldUsername, 1, 1);
Label labelPassword = new Label("Password:");
gridPane.add(labelPassword, 0, 2);
PasswordFieldPassword = new PasswordField();
gridPane.add(PasswordFieldPassword, 1, 2);
buttonLogin = new Button("Login");
buttonCancel = new Button("Cancel");
gridPane.add(new Separator(), 0, 4, 2, 1);
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(buttonLogin);
hbBtn.getChildren().add(buttonCancel);
gridPane.add(hbBtn, 1, 5);
primaryStage.show();
setListeners();
}
public static void main(String[] args) {
launch(args);
}
}
Output: