이번에는 BorderPane을 그대로 사용합니다.
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("main.fxml"));
primaryStage.setTitle("Directories");
BorderPane의 Center 부분에 Pane을 추가하고 TreeView를 사진과 같이 배치
TreeView : Code, fx:id - treeView
Mouse - On Mouse Clicked - selectTree
Controller class 등록
이제 폴더 구조를 만들기 위한 폴더 아이콘 이미지를 올려 줍니다.
위 이미지를 우클릭 다른 이름으로 저장
그리고 img 패키지를 새로 만든 후 드래그 앤 드롭으로 복사하고
Controller class 등록 후 클래스를 작성합니다.
package app;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
public class MainController implements Initializable{
// 폴더 명을 받기 때문에 String
@FXML private TreeView<String> treeView;
// 프로젝트의 src폴더 절대경로
// "img/icon.png" 맨 앞에 슬래시가 없으면 app.img 패키지, 없으면 app 아래까지 절대경로를 지정
// "/img/icon.png" 맨 앞에 슬래시가 있으면 img 패키지
Image img = new Image(getClass().getResourceAsStream("/img/icon.png"));
@SuppressWarnings("unchecked")
@Override
public void initialize(URL location, ResourceBundle resources) {
System.out.println("FXML Load Complete");
// 트리뷰의 구조를 먼저 설정해야함
/*
* - 영화
* - 코메디
* - 한국
* - 미국
* - 영국
* - 로맨스
* - 액션
*/
// 폴더 : 7개 - 이미지 7개
ImageView[] iv = new ImageView[7];
for(int i = 0; i < 7; i++) {
iv[i] = new ImageView(img);
iv[i].setFitHeight(25); // 픽셀을 의미
iv[i].setFitWidth(25);
}
// 1단계 트리 아이템 추가
TreeItem<String> movie = new TreeItem<String>("영화", iv[0]);
// 2단계 트리뷰에 추가
TreeItem<String> comedy = new TreeItem<String>("comedy", iv[1]);
TreeItem<String> romance = new TreeItem<String>("romance", iv[2]);
TreeItem<String> action = new TreeItem<String>("action", iv[3]);
// 1단계 밑에 추가
movie.getChildren().addAll(comedy, romance, action);
// 3단계 아이템 생성
TreeItem<String> korea = new TreeItem<String>("한국", iv[4]);
TreeItem<String> america = new TreeItem<String>("미국", iv[5]);
TreeItem<String> english = new TreeItem<String>("영국", iv[6]);
// 2단계 밑에 추가
comedy.getChildren().addAll(korea, america, english);
//한국 밑에 코메디 영화 2가지 추가(이미지 X)
TreeItem<String> movie1 = new TreeItem<String>("영화1");
TreeItem<String> movie2 = new TreeItem<String>("영화2");
korea.getChildren().addAll(movie1, movie2);
// 트리뷰에 추가
treeView.setRoot(movie);
}
public void selectTree(MouseEvent evt) {
// 더블클릭하면 그 값을 가져옴
// get Click Count는 연속 클릭 횟수를 세는 메소드
System.out.println(evt.getClickCount());
if(evt.getClickCount() == 2) {
TreeItem<String> item = treeView.getSelectionModel().getSelectedItem();
System.out.println(item.getValue());
}
}
}
'JavaFX > 01.Node 추가' 카테고리의 다른 글
| [JAVA FX]01-09.속성 감시, 속성 바인딩 (0) | 2018.09.10 |
|---|---|
| [JAVA FX]01-08.Menu 바 추가 (0) | 2018.09.10 |
| [JAVA FX]01-06.TableView, StringProperty, cellData (0) | 2018.09.10 |
| [JAVA FX]01-05.ImageView, FileChooser(윈도우 파일 선택창), ExtensionFilter (0) | 2018.09.10 |
| [JAVA FX]01-04.ListView, Observable (0) | 2018.09.10 |