Main.java 설정


Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));


primaryStage.setTitle("image view");


fxml파일의 Border pane 삭제





AnchorPane위에


ImageView : Layout은 원하시는대로 사이즈를 잘 맞춰보세요.


Code : fx:id - imgView


Button : Code : On Action - fileChoose


먼저 Controller로 설정한 java파일이 시작(initialize)될 때 이미지를 웹에서 끌어와 기본 이미지로 띄울 것이고


그리고 이미지 선택 버튼을 누르면 윈도우 파일 선택창이 나오고 그 파일을 InputStream으로 받아서 ImageView에 띄우는것.



package app;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;

public class MainController implements Initializable {
	@FXML private ImageView imgView;
	
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {
		System.out.println("FXML Load Complete");
		// 기본 이미지(웹 이미지)
		// http://img.hani.co.kr/imgdb/resize/2017/0623/00502643_20170623.JPG , 치킨주의!!
		String url = "http://img.hani.co.kr/imgdb/resize/2017/0623/00502643_20170623.JPG";
		Image img = new Image(url);
		// 선택한 이미지의 사이즈 조절이 가능하다.
		imgView.setFitHeight(372);
//		imgView.setFitHeight(img.getHeight()/2);
		imgView.setFitWidth(372);
		imgView.setImage(img);
	}
	
	public void fileChoose() {
		// 사진 선택 창
		FileChooser fc = new FileChooser();
		fc.setTitle("이미지 선택");
		fc.setInitialDirectory(new File("C:/")); // default 디렉토리 설정
		// 선택한 파일 정보 추출
		// 확장자 제한
		ExtensionFilter imgType = new ExtensionFilter("image file", "*.jpg", "*.gif", "*.png");
//		fc.getExtensionFilters().add(imgType);
		ExtensionFilter txtType = new ExtensionFilter("text file", "*.txt", "*.doc");
		fc.getExtensionFilters().addAll(imgType, txtType);
		
		File selectedFile =  fc.showOpenDialog(null); // showOpenDialog는 창을 띄우는데 어느 위치에 띄울건지 인자를 받고
																// 그리고 선택한 파일의 경로값을 반환한다.
		System.out.println(selectedFile); 				// 선택한 경로가 출력된다.
		
		// 파일을 InputStream으로 읽어옴
		try {
			// 파일 읽어오기
			FileInputStream fis = new FileInputStream(selectedFile);
			BufferedInputStream bis = new BufferedInputStream(fis);
			// 이미지 생성하기
			Image img = new Image(bis);
			// 이미지 띄우기
			imgView.setImage(img);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
	}
	
}














+ Recent posts