이번에는 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());
		}
	}
	
}



+ Recent posts