티스토리 뷰
들어가며
- JavaFX Pagination의 사용법을 알아보겠습니다.
- Pagination은 간단하게는 게시판 형식의 화면, Table 형태의 데이터를 나타내는데 자주 쓰이는 컨트롤입니다.
사용법
JavaFX Pagination
- JavaFX Pagination 컨트롤은 주로 단일 컨텐츠 내에서 페이지를 탐색하는 데 주로 사용됩니다.
주요 메소드들
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은 아래를 참고해주세요
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) JavaFX Spinner 개념 및 사용법 (0) | 2020.05.19 |
---|---|
(JavaFX) JavaFX ListView FXML상에서 데이터 초기화 방법 (0) | 2020.05.12 |
(JavaFX) FXML 상에서 Label Font 설정방법 (0) | 2020.05.10 |
(JavaFX) FXML에서 ImageView위에 Image 로드 하는 방법 (0) | 2020.05.08 |
(JavaFX) JavaFX ImageView 사용법 (이미지 전시 방법) (0) | 2020.05.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 스프링부트
- 일본 여행
- JavaFX
- 배낭 여행
- springboot
- JavaFX 테이블뷰
- 일본여행
- 자전거 여행
- 자전거
- java
- 이펙티브 자바
- 이펙티브
- windows
- Java UI
- 이펙티브자바
- 일본 배낭여행
- JavaFX Window Close
- effectivejava
- intelij
- 인텔리제이
- effective java
- 텐트
- 배낭여행
- JavaFX 종료
- JavaFX Table View
- 일본 자전거 여행
- 방통대 과제물
- 자바
- git
- TableView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함