FileChooser , DirectoryChooser
사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.
설명은 주석과 코드 아랫부분에 있습니다.
1. 메인 파일 예제입니다.(title 만 다르고 내용이 거의 변하지 않습니다.)
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class AppMain extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = (Parent)FXMLLoader.load(getClass().getResource("main.fxml"));
Scene scene = new Scene(root);
primaryStage.setTitle("파일저장 열기 디렉토리선택 예제 입니다.");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setAlwaysOnTop(true);
}
public static void main(String[] args) {
launch(args);
}
}
2. main.fxml 파일 예제입니다.
그대로 복붙 하여 테스트해보시면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="831.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainHandler">
<children>
<Button layoutX="68.0" layoutY="65.0" mnemonicParsing="false" onAction="#selOpenFile" text="OpenFile" />
<Button layoutX="71.0" layoutY="152.0" mnemonicParsing="false" onAction="#selSaveFile" text="SaveFile" />
<Button layoutX="67.0" layoutY="230.0" mnemonicParsing="false" onAction="#selDir" text="Directory" />
<TextArea fx:id="ta" layoutX="167.0" layoutY="64.0" prefHeight="200.0" prefWidth="639.0" />
</children>
</AnchorPane>
3. MainHandler.java 핸들러 파일입니다.
그대로 복붙 하여 테스트하시길 바랍니다.
import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextArea;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;
public class MainHandler implements Initializable {
@FXML
private TextArea ta;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
//새로운 창이 열리는 다이얼로그는 새로운 현재 화면에서 사용할수 없고
//새로운 stage가 필요하다.간단하게 선어만 해주면 사용할수 있다.
private Stage primaryStage;
//열기 버튼을 선택했을때의 처리부분
public void selOpenFile(ActionEvent e) {
//파일추저를 선언합니다.
FileChooser fileChooser = new FileChooser();
//선언한 파일 추저에서 표시한 옵션을 넣어 줍니다.
//이또한 정형화된 표현 입니다. 약간의 수정후 그대로 사용하시면 됩니다.
fileChooser.getExtensionFilters().addAll(new ExtensionFilter("문자파일 : Text Files", "*.txt"),
new ExtensionFilter("그림파일 : Image Files", "*.png", "*.jpg", "*.gif"),
new ExtensionFilter("음악파일 : Audio Files", "*.wav", "*.mp3", "*.aac"),
new ExtensionFilter("동여상 : Video Files", "*.mp4", "*.mpv", "*.mkv"),
new ExtensionFilter("그외 사용자지정 : All Files", "*.*"));
//현재 화면에 띄울수 없으므로 위에서 선언한 stage를 사용한다.
File file = fileChooser.showOpenDialog(primaryStage);
//아무것도 선택하지 않고 취소를 하면 else를 실행한다.
if (file != null) {
ta.setText("open할 파일의 이름은 :"+file.getPath());
}else {
ta.setText("아무것도 지정하지 않았습니다.");
}
}
public void selSaveFile(ActionEvent e) {
//파일추저를 선언합니다.
FileChooser fileChooser = new FileChooser();
//선언한 파일 추저에서 표시한 옵션을 넣어 줍니다.
//이또한 정형화된 표현 입니다. 약간의 수정후 그대로 사용하시면 됩니다.
fileChooser.getExtensionFilters().addAll(new ExtensionFilter("문자파일 : Text Files", "*.txt"),
new ExtensionFilter("그림파일 : Image Files", "*.png", "*.jpg", "*.gif"),
new ExtensionFilter("음악파일 : Audio Files", "*.wav", "*.mp3", "*.aac"),
new ExtensionFilter("동여상 : Video Files", "*.mp4", "*.mpv", "*.mkv"),
new ExtensionFilter("그외 사용자지정 : All Files", "*.*"));
//현재 화면에 띄울수 없으므로 위에서 선언한 stage를 사용한다.
File file = fileChooser.showSaveDialog(primaryStage);
//아무것도 선택하지 않고 취소를 하면 else를 실행한다.
if (file != null) {
ta.setText("save할 파일의 이름은 :"+file.getPath());
}else {
ta.setText("아무것도 지정하지 않았습니다.");
}
}
public void selDir(ActionEvent e) {
//디렉토리 추저를 선언합니다.
DirectoryChooser directoryChooser = new DirectoryChooser();
//현재 화면에 띄울수 없으므로 위에서 선언한 stage를 사용한다.
File dir = directoryChooser.showDialog(primaryStage);
//아무것도 선택하지 않고 취소를 하면 else를 실행한다.
if (dir != null) {
ta.setText("선택한 디렉토리의 이름은 :"+dir.getPath());
}else {
ta.setText("아무것도 지정하지 않았습니다.");
}
}
}
filechooser, directorychooser 은 많이는 사용하지 않지만 꼭 사용은 하는 부분입니다.
엑셀 파일을 읽거나 출력할 때 등 무조건 사용은 합니다.
로그파일을 저장할때도 그렇습니다.
하지만 특별한 부분이 있는 것은 아닙니다.
늘 사용하는 부분만 사용하기 때문에 복붙 하여 사용하시면 되겠습니다.
윈도우즈에서 기본적으로 제공하는 기능을 불러서 사용하기 때문에 코드도 짫고
사용하기도 편합니다.
끝.
아래는 실행 영상입니다.
세상 모든 것들은 그 자신을 위해 존재한다.
728x90
반응형
'자바' 카테고리의 다른 글
자바 특정일의 주차,일자 구하기 [김철수홍길동] (0) | 2021.01.23 |
---|---|
자바 현재의 주차,일자 구하기 [김철수홍길동] (0) | 2021.01.23 |
자바 자바fx 에어리어챠트 AreaChart [북붙따라하기] (0) | 2021.01.10 |
자바 자바fx 바챠트 BarChart [북붙따라하기] (0) | 2021.01.09 |
자바 자바fx 파이챠트 PieChart [북붙따라하기] (0) | 2021.01.08 |
댓글