举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > javafx分页处理 JavaFX 分页

javafx分页处理 JavaFX 分页

2023-03-13 17:18 Java教程

javafx分页处理 JavaFX 分页

javafx分页处理

JavaFX是一种用于开发跨平台图形用户界面的Java语言库,它提供了一种简单而强大的方法来创建和处理用户界面。它也提供了一种有效的方法来处理分页,以便在用户界面中显示大量数据。

JavaFX中的分页处理是通过使用Pagination控件来实现的。Pagination控件允许开发人员将大量数据分割成小块,然后将其显示在不同的页面上。这样,用户就可以通过单击不同的页面来浏览所有数据。

使用Pagination控件时,开发人员必须实现PageFactory接口,该接口允许开发人员为不同的页面定义不同的内容。PageFactory接口包含一个createPage()方法,该方法允许开发人员为特定页面创建Node对象(Node对象是JavaFX中表示UI元素的对象)。

public interface PageFactory { 
    public Node createPage(int pageIndex); 
}

此外,Pagination还有一个setPageFactory()方法,该方法允许开发人员将PageFactory对象传递到Pagination对象中。当用户单击不同的页时,Pagination会使用PageFactory对象来生成相应的Node对象并显示在UI上。

public void setPageFactory(PageFactory pageFactory) { 
    this.pageFactory = pageFactory; 
}

因此,使用JavaFX中的Pagination控件可以很容易地处理大量数据并将其拆分为小块并显示在不同的UI上。此外,使用PageFactory也能很好地帮助开发人员为特定页生成Node对象并放在UI上。

JavaFX 分页

JavaFX教程 - JavaFX分页


分页控件用于浏览多个页面。 我们典型地使用对网页的分页控制,例如博客。 在博客页面的底部,我们可以看到一个矩形区域,作为一个数字列表来指示页面索引,以及一个下一个/上一个按钮来链接到下一个/上一个页面。

创建分页控件

分页控件由页面内容和页面导航区域组成。

创建具有不确定页计数和当前页索引等于零的分页控件

Pagination pagination1 = new Pagination();

要创建一个5页的分页控件,当前页索引等于零

Pagination pagination2 = new Pagination(5);

要创建一个5页的分页控件,当前所选索引等于2

Pagination pagination3 = new Pagination(5, 2);
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
  private Pagination pagination;

  public static void main(String[] args) throws Exception {
    launch(args);
  }

  public int itemsPerPage() {
    return 8;
  }

  public VBox createPage(int pageIndex) {
    VBox box = new VBox(5);
    int page = pageIndex * itemsPerPage();
    for (int i = page; i < page + itemsPerPage(); i++) {
      VBox element = new VBox();
      Hyperlink link = new Hyperlink("Item " + (i + 1));
      link.setVisited(true);
      Label text = new Label("Search resultsnfor " + link.getText());
      element.getChildren().addAll(link, text);
      box.getChildren().add(element);
    }
    return box;
  }

  @Override
  public void start(final Stage stage) throws Exception {
    pagination = new Pagination(28, 0);
    pagination.setStyle("-fx-border-color:red;");
    pagination.setPageFactory((Integer pageIndex) -> createPage(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();
  }
}

上面的代码生成以下结果。

null


将分段文本添加到分页控件

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.TextArea;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
 
    private Pagination pagination;
    final String[] textPages = new String[]{
        "this is a test 1",
        "this is a test 2",
        "this is a test 3",
        "this is a test 4",
        "this is a test 5",
        "this is a test 6",
        "this is a test 7",
        "this is a test 8",
        "this is a test 8",
    };
 
    public static void main(String[] args) throws Exception {
        launch(args);
    }
 
    public int itemsPerPage() {
        return 1;
    }
 
    public VBox createPage(int pageIndex) {
        VBox box = new VBox(5);
        int page = pageIndex * itemsPerPage();
        for (int i = page; i < page + itemsPerPage(); i++) {
            TextArea text = new TextArea(textPages[i]);
            text.setWrapText(true);
            box.getChildren().add(text);
        }
        return box;
    }
 
    @Override
    public void start(final Stage stage) throws Exception {
        pagination = new Pagination(28, 0);
        pagination.setPageFactory((Integer pageIndex) -> {
            if (pageIndex >= textPages.length) {
                return null;
            } else {
                return createPage(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, 400, 250);
        stage.setScene(scene);
        stage.setTitle("PaginationSample");
        stage.show();
    }
}

上面的代码生成以下结果。

null

添加未确定大小的内容

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Pagination;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class Main extends Application {
 
    private Pagination pagination;
    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.setPageFactory((Integer pageIndex) -> createPage(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, 400, 450);
        stage.setScene(scene);
        stage.show();
    }
}

上面的代码生成以下结果。

null
阅读全文
以上是编程学为你收集整理的javafx分页处理 JavaFX 分页全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部