이번에는 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 |