JFXTableView, TreeTableView 만들기
기본 TreeTableView 사용법
최상위 root로 TreeItem rootTitle 을 생성
subTitle1을 생성하고 그 밑으로 Sub1_1, Sub1_2을 add 한다.
같은 방법으로 subTitle2를 생성한다.
최상위 rootTitle에 subTitle1과 subTitle2를 add 한다.
TreeView를 생성하고 최상위 rootTitle을 set한다.
treeView.setShowRoot(false) 로 최상위 rootTitle을 숨긴다.
> root ( 숨김처리 )
> Sub1
Sub1_1
Sub1_2
> Sub2
Sub2_1
Sub2_2
TreeItem rootTitle = new TreeItem("root");
TreeItem subTitle1 = new TreeItem("Sub1");
subTitle1.getChildren().add(new TreeItem("Sub1_1"));
subTitle1.getChildren().add(new TreeItem("Sub1_2"));
rootTitle.getChildren().add(subTitle1);
TreeItem subTitle2 = new TreeItem("Sub2");
subTitle2.getChildren().add(new TreeItem("Sub2_1"));
subTitle2.getChildren().add(new TreeItem("Sub2_2"));
rootTitle.getChildren().add(subTitle1);
TreeTableView treeView = new TreeTableView();
treeView.setRoot(rootTitle);
treeView.setShowRoot(false);
JFXTreeTableView 와 JFXTreeTableColumn 을 사용하여 동적 Tree 만들기
<AnchorPane>
<chileren>
<JFXTreeTableView fx:id="jfxTree" >
</JFXTreeTableView>
</children>
</AnchorPane>
@FXML private JFXTreeTableView jfxTree;
@FXML private JFXTreeTableColumn<UserVO, String> col1, col2, col3;
public tableSetting(){
List<UserVO> userList = service.getUserList();
col1 = new JFXTreeTableColumn<>("id");
col2 = new JFXTreeTableColumn<>("name");
col3 = new JFXTreeTableColumn<>("age");
col1.setCellValueFactory(new TreeItemPropertyValueFactory<UserVO, String>("id"));
col2.setCellValueFactory(new TreeItemPropertyValueFactory<UserVO, String>("name"));
col3.setCellValueFactory(new TreeItemPropertyValueFactory<UserVO, String>("age"));
col1.prefWidthProperty().bind(jfxTree.widthProperty().divide(3));
col2.prefWidthProperty().bind(jfxTree.widthProperty().divide(3));
col3.prefWidthProperty().bind(jfxTree.widthProperty().divide(3));
TreeItem<UserVO> rootItem = new TreeItem<UserVO>();
Map<String, TreeItem<UserVO>> rootMap = new HashMap<String, TreeItem<UserVO>>();
Map<String, TreeItem<UserVO>> subMap = new HashMap<String, TreeItem<UserVO>>();
for(UserVO user : userList){
if(!rootMap.containsKey(user.getUserId()))) {
TreeItem<UserVO> root = new TreeItem<UserVO>();
root.setValue(user);
rootMap.put(user.getUserId(), root);
} else {
TreeItem<UserVO> sub = new TreeItem<UserVO>();
sub.setValue(user);
subMap.put(user.getUserId() + user.getName(), user);
}
}
rootMap.entrySet().forEach((rt) -> {
subMap.entrySet().forEach(sb) -> {
if(sb.getValue().getValue().getUserId().equals(rt.getValue().getValue().getUserId())){
rt.getValue().getChildren().addAll(sb.getValue());
}
});
rootItem.getChildren().add(rt.getValue());
});
jfxTree.setRoot(rootItem);
jfxTree.setShowRoot(false);
}
'JavaFX' 카테고리의 다른 글
[JavaFX] Hibernate cannot be case to 오류 (0) | 2020.08.15 |
---|---|
[JavaFX] textField input validation 체크하기 (0) | 2020.08.05 |
[JavaFX] JPA Hibernate JDBC-90611:Specified column name was not found. - 컬럼명 (0) | 2020.07.21 |
[JavaFX] TableView ChangeListener 마우스 클릭 없이 키보드 Event 조작 (0) | 2020.07.14 |
[JavaFX] 윈도우 로그인 화면 제목 타이틀바 없애고 화면 이동 드래그 하기 (0) | 2020.07.13 |