package tabpanesorttabs; import com.sun.javafx.runtime.VersionInfo; import java.util.Comparator; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.control.TabBuilder; import javafx.scene.control.TabPane; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class TabPaneSortTabs extends Application { TabPane tabPane; Button btnSort; Button btnSetData; ObservableList tabs; @Override public void start(Stage primaryStage) { tabPane = new TabPane(); tabPane.setMinSize(250, 150); tabs = FXCollections.observableArrayList(); for (int i = 2; i >=0; i--) { tabs.add(TabBuilder.create().text("" + i).content(new Label("content")).build()); } btnSort = new Button("Sort tabs"); btnSort.setOnAction(new EventHandler() { @Override public void handle(ActionEvent t) { FXCollections.sort(tabPane.getTabs(), new Comparator() { @Override public int compare(Tab o1, Tab o2) { return o1.getText().compareTo(o2.getText()); } }); } }); btnSetData = new Button("SetData"); btnSetData.setOnAction(new EventHandler() { @Override public void handle(ActionEvent t) { tabPane.getTabs().setAll(tabs); } }); HBox root = new HBox(10.0); root.getChildren().addAll(tabPane, btnSort, btnSetData); Scene scene = new Scene(root, 600, 400); primaryStage.setTitle(VersionInfo.getRuntimeVersion()); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }