삶 가운데 남긴 기록 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' 카테고리의 다른 글
| ORA-01704: JAVA ORACLE JDBC로 4000자 이상 CLOB 데이터 INSERT, UPDATE 예제 (2) | 2024.12.30 | 
|---|---|
| org.apache.poi 자바용 오피스 라이브러리 임시 파일 제거 (3) | 2024.11.27 | 
| [SWT/JFace] 주요 위젯 (1) | 2024.11.27 | 
| [SWT/JFace] 이벤트 처리 (46) | 2024.11.27 | 
| [SWT/JFace] Composite 클래스 (1) | 2024.11.27 | 

 
                  