JAVA FX
GridPane - DataBinding처리
업데이트 :: 2018.07.26
01. GridPane Binding
예제코드를 살펴보겠습니다.
동적으로 바인딩된 GridPane을 사용하기 위해 자동 업데이트 해주는 클래스입니다.
public class DynamicGrid { GridPane gridPane; Stone[][] board; int column; int row; /* 생성자 */ public DynamicGrid(GridPane gridPane, int column, int row) { this.gridPane = gridPane; this.column = column; this.row = row; init(); } /* 초기화 */ void init() { board = new Stone[column][row]; for (int c = 0; c < column; c++) { for (int r = 0; r < row; r++) { // TODO something String str = String.format("(%d,%d)", c, r); setLabelAt(new Label(str), c, r); } } render(); } /* 특정위치에 라벨을 추가합니다. */ private Label getLabelAt(int x, int y) { return board[x][y]; } /* 특정위치에 라벨을 추가합니다. */ private void setLabelAt(Label label, int x, int y) { board[x][y] = label; render(); } /* 보드를 정리합니다. */ void clear() { gridPane.getChildren().clear(); } /* 수정사항이 있다면 전체 업데이트 합니다. */ private void render() { clear(); List<Label> listLable = new ArrayList<>(); for (int c = 0; c < column; c++) { for (int r = 0; r < row; r++) { Label label = getStoneAt(c, r); listStone.add(label); GridPane.setColumnIndex(label, c); GridPane.setRowIndex(label, r); } } gridPane.getChildren().setAll(listLable); // (add all at once for better performance) } }
02. 사용
GridPane gridPane = new GridPane(); int column = 5; int row = 5; DynamicGrid dg = new DynamicGrid(gridPane, column, row); dg.setLabelAt(new Label("new label"), 2, 2);
Created by SDM
작성자 정보
e-mail :: jm921106@naver.com || jm921106@gmail.com
github :: https://github.com/moonscoding
반응형
'Java > Java 구현' 카테고리의 다른 글
Java // 구현 // Client Socket // NIO Blocking (0) | 2018.08.06 |
---|---|
Java // 구현 // Client SocketChannel (in Server) // NIO NonBlocking (0) | 2018.08.03 |
Java // 구현 // Server Socket // NIO NonBlocking (0) | 2018.08.03 |