삶 가운데 남긴 기록 AACII.TISTORY.COM
[SWT/JFace] FileDialog 파일 열기 대화 상자 본문
자바 SWT/JFace 를 이용한 GUI 애플리케이션에서 실행중인 PC의 파일(텍스트)을 읽을 수 있는 파일 열기 대화 상자의 간단한 사용법에 대해 알아보겠습니다.
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.jface.window.ApplicationWindow;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TextFileReaderApp extends ApplicationWindow {
public TextFileReaderApp() {
super(null);
}
@Override
protected Control createContents(Composite parent) {
parent.getShell().setText("Text File Reader");
parent.setLayout(new FillLayout());
Text textArea = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
Menu menuBar = new Menu(parent.getShell(), SWT.BAR);
parent.getShell().setMenuBar(menuBar);
MenuItem fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("File");
Menu fileMenu = new Menu(parent.getShell(), SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
MenuItem openItem = new MenuItem(fileMenu, SWT.PUSH);
openItem.setText("Open");
openItem.addListener(SWT.Selection, e -> {
FileDialog fileDialog = new FileDialog(parent.getShell(), SWT.OPEN);
// 확장자를 txt으로 제한하려면 아래처럼 필터를 설정해줍니다.
fileDialog.setFilterExtensions(new String[] {"*.txt"});
fileDialog.setFilterNames(new String[] {"Text Files (*.txt)"}); // 파일 유형 이름 설정
String selectedFile = fileDialog.open();
if (selectedFile != null) {
try (BufferedReader br = new BufferedReader(new FileReader(selectedFile))) {
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
textArea.setText(sb.toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
return parent;
}
public static void main(String[] args) {
TextFileReaderApp app = new TextFileReaderApp();
app.setBlockOnOpen(true);
app.open();
Display.getCurrent().dispose();
}
}
728x90
'DEV&OPS > Java' 카테고리의 다른 글
org.apache.poi 자바용 오피스 라이브러리 임시 파일 제거 (1) | 2024.11.27 |
---|---|
[SWT/JFace] 주요 위젯 (0) | 2024.11.27 |
[SWT/JFace] 이벤트 처리 (45) | 2024.11.27 |
[SWT/JFace] Composite 클래스 (1) | 2024.11.27 |
[SWT/JFace] Widget, Control, Label, Button (1) | 2024.11.27 |