티스토리 뷰

들어가며

  • JavaFX Pagination의 사용법을 알아보겠습니다.
  • Pagination은 간단하게는 게시판 형식의 화면, Table 형태의 데이터를 나타내는데 자주 쓰이는 컨트롤입니다.


사용법

JavaFX Pagination

  • JavaFX Pagination 컨트롤은 주로 단일 컨텐츠 내에서 페이지를 탐색하는 데 주로 사용됩니다.
 

Pagination (JavaFX 8)

The current page index to display for this pagination control. The first page will be the current page if the value is less than 0. Similarly the last page will be the current page if the value is greater than the pageCount The default is 0 for the first p

docs.oracle.com


주요 메소드들

setPageCount(int value)

  • 전체 Page 개수 설정

setMaxPageIndicatorCount(int value)

  • 한번에 화면에 보여지는 Page 개수 설정

setCurrentPageIndex(int value)

  • 현재 페이지 Index를 설정

setPageFactory(Callback<Integer,Node> value)

  • PageFactory란 Pagination이 선택될 때마다 호출이 되는 콜백 함수로 Node를 리턴할 수 있고 리턴된 Node는 Pagination 바로 위에 전시가 된다.
  •  언뜻 보기에는 Pagination의 현재 페이지 정보를 나타낼 때 사용이 되는 것 같아 보이긴 한다. 사용예는 아래 예제에서 볼 수 있다.

예제

Pagination.fxml

  • 하단에 Pagination이 있고 화면 중간에는 Page 번호를 출력하는 Label을 두었다.
<fx:root style="-fx-background-color: #A2A5AC;" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" stylesheets="@../fx.css" prefWidth="800" prefHeight="500">
  <VBox AnchorPane.topAnchor="0" AnchorPane.leftAnchor="0" AnchorPane.rightAnchor="0" AnchorPane.bottomAnchor="30" alignment="CENTER">
    <Label fx:id="label">
      <font>
        <Font name="Roboto Regular" size="20.0" />
      </font>
    </Label>
  </VBox>
  <VBox prefHeight="30.0" AnchorPane.leftAnchor="0" AnchorPane.rightAnchor="0" AnchorPane.bottomAnchor="0" alignment="CENTER">
    <padding>
      <Insets top="4" left="4" right="4" bottom="4"/>
    </padding>
    <Pagination fx:id="pagination" styleClass="my-pagination" GridPane.columnIndex="5" GridPane.rowIndex="5"/>
  </VBox>
</fx:root>

 

 

PaginationController.java

  • Pagination이 변경될 때 마다 paginationChangeListener가 호출되면서 Label을 업데이트 한다.
  • PageFactory를 이용하여 Label과 동일한 Text를 출력하게 한다. 
  • FxUiUtil은 아래를 참고해주세요
 

rlawlstjd0077/JavaFxPlayGround

Contribute to rlawlstjd0077/JavaFxPlayGround development by creating an account on GitHub.

github.com

 

public class PaginationController extends AnchorPane {

  @FXML
  private Label label;
  @FXML
  private Pagination pagination;

  private final ChangeListener<Number> paginationChangeListener = (observable, oldValue, newValue) -> changePage();


  public PaginationController() {
    FxUiUtil.initializeFont();
    FxUiUtil.loadFxml(this);
    pagination.setPageCount(100);
    pagination.setMaxPageIndicatorCount(10);
    pagination.currentPageIndexProperty().addListener(paginationChangeListener);
    pagination.setPageFactory(new Callback<Integer, Node>() {
      @Override
      public Node call(Integer param) {
        return new Label(String.format("Current Page: %d", pagination.getCurrentPageIndex()));
      }
    });
  }

  private void changePage() {
    label.setText(String.format("Current Page: %d", pagination.getCurrentPageIndex()));
  }
}

테스트

PaginationContollerTest.java

public class PaginationControllerTest extends Application {

  @Override
  public void start(Stage primaryStage) throws Exception {
    PaginationController imageController = new PaginationController();
    primaryStage.setScene(new Scene(imageController));
    primaryStage.setTitle("Pagination Test");
    primaryStage.show();
  }

  @Test
  public void test() {
    launch();
  }
}

 

  • 아래와 같은 컨트롤이 전시됩니다.
    • PageFactory는 예상했던 대로 현재 페이지를 나타내는 정도로 사용하는 것 같음


관련글

 

(JavaFX) JavaFX ImageView 사용법 (이미지 전시 방법)

들어가며 JavaFX ImageView 를 사용하여 Image를 전시하는 방법에 대해서 알아보도록 하겠습니다. 테스트를 위해서는 Sample로 사용할 이미지가 필요하니 필요에 따라 준비하시면 좋습니다. JavaFX ImageVie

jinseongsoft.tistory.com

 

(JavaFX) JavaFX TableView 사용법 ver.2

들어가며 이전에 썼던 글인 JavaFX TableView 사용법 이 시간이 지나서 보니 조금 설명이 허접한 것 같기도 하고.. 리뉴얼이 필요할 것 같았다. [JavaFX] Table View 사용법 Table View 사용법 이번 시간에는 Ja

jinseongsoft.tistory.com

 

[JavaFX] 실시간 업데이트 되는 Timer(시계) 컨트롤 구현 방법

들어가며 JavaFX를 이용해 실시간으로 업데이트되는 Timer 컨트롤을 구현해보고자 합니다. 원본 소스는 아래 위치에 있습니다. rlawlstjd0077/JavaFxPlayGround Contribute to rlawlstjd0077/JavaFxPlayGround dev..

jinseongsoft.tistory.com

 

[JavaFx] Tray Icon에 메뉴 추가 방법 (Tray Menu 사용법)

들어가며 JavaFX의 Tray Icon에 메뉴를 추가하는 방법에 대해서 알아보도록 하겠습니다. Tray Menu Tray Icon에 추가하는 메뉴는 아래와 같은 형태로 Tray Icon에 오른쪽 마우스 클릭을 했을 때 전시되는 메�

jinseongsoft.tistory.com

 

반응형
댓글