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(); } } }
'JavaFX > 01.Node 추가' 카테고리의 다른 글
[JAVA FX]01-07.TreeView (0) | 2018.09.10 |
---|---|
[JAVA FX]01-06.TableView, StringProperty, cellData (0) | 2018.09.10 |
[JAVA FX]01-04.ListView, Observable (0) | 2018.09.10 |
[JAVA FX]01-03.GridPane, ComboBox, 입력값 읽기 (0) | 2018.09.10 |
[JAVA FX]01-02.Button 기능 추가, Radio 버튼, CheckBox (0) | 2018.09.07 |