import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Pagination;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.util.Callback;
public class PaginationSample extends Application {
private Pagination pagination;
private String[] fonts = new String[]{};
public static void main(String[] args) throws Exception {
launch(args);
}
public int itemsPerPage() {
return 15;
}
public VBox createPage(int pageIndex) {
VBox box = new VBox(5);
int page = pageIndex * itemsPerPage();
for (int i = page; i < page + itemsPerPage(); i++) {
Label font = new Label(fonts[i]);
box.getChildren().add(font);
}
return box;
}
@Override
public void start(final Stage stage) throws Exception {
fonts = Font.getFamilies().toArray(fonts);
pagination = new Pagination(fonts.length/itemsPerPage(), 0);
pagination.getStyleClass().add(Pagination.STYLE_CLASS_BULLET);
pagination.setPageFactory(new Callback<Integer, Node>() {
@Override
public Node call(Integer pageIndex) {
return createPage(pageIndex);
}
});
pagination.currentPageIndexProperty().addListener(
observale -> System.out.printf("Neue Seite: %d", pagination.getCurrentPageIndex()).println());
pagination.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
int pageIndex = 1;
int index = 0;
String tooltipText = "";
for(Node n1 : pagination.getChildrenUnmodifiable()) {
if(n1 instanceof StackPane) {
for(Node n2 : ((StackPane) n1).getChildren()) {
if(n2 instanceof HBox) {
for(Node n3 : ((HBox) n2).getChildren()) {
// linker und rechter Button
if(n3 instanceof Button) {
if(index == 0)
((Button) n3).setTooltip(new Tooltip("go left"));
else
((Button) n3).setTooltip(new Tooltip("go right"));
index++;
}
// die buttons die fuer jede page erstellt werden.
else if(n3 instanceof ToggleButton) {
switch (pageIndex) {
case 0:
tooltipText = "Ich weiss noch nix...";
break;
case 1:
tooltipText = "Ich weiss auch noch nix...";
break;
case 2:
tooltipText = "Ich weiss es aber nicht mehr...";
break;
case 3:
tooltipText = "Ich weiss es ...";
break;
case 4:
tooltipText = "Ich hab es schon mal gewusst...";
break;
case 5:
tooltipText = "verflixt, ich hab's doch gewusst...";
break;
case 6:
tooltipText = "Ich hab schon alles vergessen...";
break;
default:
tooltipText = "doh...";
break;
}
((ToggleButton) n3).setTooltip(new Tooltip(tooltipText));
pageIndex++;
}
}
}
}
}
}
}
});
AnchorPane anchor = new AnchorPane();
AnchorPane.setTopAnchor(pagination, 10.0);
AnchorPane.setRightAnchor(pagination, 10.0);
AnchorPane.setBottomAnchor(pagination, 10.0);
AnchorPane.setLeftAnchor(pagination, 10.0);
anchor.getChildren().addAll(pagination);
Scene scene = new Scene(anchor);
stage.setScene(scene);
stage.setTitle("PaginationSample");
stage.show();
}
}