SWT Tips and Samples 基礎編 > FileDialog

 

FileDialog

FileDialogはファイルを選択するためのダイアログです。コンストラクタ引き数にスタイルを指定することで、さまざまなダイアログを作成することができます。SWT.OPENかSWT.SAVEを指定することで読み込み用と保存用のダイアログが表示されます。指定による違いはダイアログのタイトルだけで、基本時には同じものです。openメソッドを実行するとダイアログが表示され、戻り値として選択されたファイルの絶対パスが返ります。キャンセルが押されるとnullが返されます。

読み込み用ダイアログの表示

FileDialog dialog = new FileDialog(shell, SWT.OPEN);
String file = dialog.open();

保存用ダイアログの表示

FileDialog dialog = new FileDialog(shell, SWT.SAVE);
String file = dialog.open();

ファイルフィルターを使ったダイアログの作成

拡張子のString配列を設定することで、ファイルフィルターを作れます。フィルターの名前も設定したフィルターに対応するように作成します。

//スタイルを省略した場合、SWT.OPENがデフォルト
FileDialog dialog = new FileDialog(shell);
String [] exts = {"*.java","*.txt","*.html;*.htm"};
String [] filterNames = {"Javaファイル(*.java)", 
                         "テキストファイル(*.txt)",
                         "HTMLファイル(*.html, *.htm)"};
dialog.setFilterExtensions(exts);
dialog.setFilterNames(filterNames);
String file = dialog.open();

複数選択可能なファイルダイアログの表示

FileDialogのコンストラクタにMULTIを指定すると、複数のファイルを選択できるようになります。この場合、getFileNamesメソッドで複数選択されたファイルを取得します。しかしここで戻ってくる値は、ファイル名しか与えられないため、別途getFilterPathでディレクトリ名を取得する必要があるでしょう。またsetFilterPathメソッドで初期ディレクトリを指定できます。

FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);
String path = "c:\\";
dialog.setFilterPath(path);
String file = dialog.open();
String [] files = dialog.getFileNames();
String path = dialog.getFilterPath();

サンプルプログラム

これまで説明したFileDialogのサンプルプログラムです。

ソースコード (FileDialogTest.java)

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.*;

public class FileDialogTest extends SelectionAdapter{

        private Shell shell;
        private Button button1;
        private Button button2;
        private Button button3;
        private Button button4;

        public static void main(String[] args) {
                new FileDialogTest();
        }
        public FileDialogTest() {
                Display display = new Display();
                shell = new Shell(display);
                shell.setText("FileDialogTest");
                shell.setLayout(new FillLayout(SWT.VERTICAL));
                
                button1 = new Button(shell, SWT.PUSH);
                button1.setText("Open File Dialog (SWT.OPEN)");
                button1.addSelectionListener(this);
                
                button2 = new Button(shell, SWT.PUSH);
                button2.setText("Open File Dialog (SWT.SAVE)");
                button2.addSelectionListener(this);
                
                button3 = new Button(shell, SWT.PUSH);
                button3.setText("Open File Dialog with File Filter");
                button3.addSelectionListener(this);
                
                button4 = new Button(shell, SWT.PUSH);
                button4.setText("Open Multi Selection File Dialog");
                button4.addSelectionListener(this);

                shell.pack();
                shell.open();
                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch()) {
                                display.sleep();
                        }
                }
                display.dispose();
        }

        public void widgetSelected(SelectionEvent e) {
                if (e.getSource() == button1){
                        FileDialog dialog = new FileDialog(shell, SWT.OPEN);
                        String file = dialog.open();
                        System.out.println("Selected file: " + file);
                }
                if (e.getSource() == button2){
                        FileDialog dialog = new FileDialog(shell, SWT.SAVE);
                        String file = dialog.open();
                        System.out.println("Selected file: " + file);
                }
                if (e.getSource() == button3){
                        //スタイルを省略した場合、SWT.OPENがデフォルト
                        FileDialog dialog = new FileDialog(shell);
                        String [] exts = {"*.java","*.txt","*.html;*.htm"};
                        String [] filterNames = {"Javaファイル(*.java)", 
                                                 "テキストファイル(*.txt)",
                                                 "HTMLファイル(*.html, *.htm)"};
                        dialog.setFilterExtensions(exts);
                        dialog.setFilterNames(filterNames);
                        String file = dialog.open();
                        System.out.println("Selected file: " + file);
                }
                if (e.getSource() == button4){
                        FileDialog dialog = new FileDialog(shell, SWT.OPEN | 
                                                                  SWT.MULTI);
                        String path = "c:\\";
                        dialog.setFilterPath(path);
                        String file = dialog.open();
                        System.out.println("Selected file: " + file);
                        
                        if (file == null){
                                return;
                        }
                        
                        String [] files = dialog.getFileNames();
                        path = dialog.getFilterPath();
                        for (int i=0; i<files.length; i++){
                           System.out.println("[" + i + "] " + 
                                              path + "\\" + files[i]);
                        }
                }
        }
}


最新更新日: 2004年9月1日
 
関連リンク
Eclipse API ドキュメント
FileDialog

- PR -

プレゼンテーション作成ソフト無料お試し版配信中

【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!

オフィス用品・オフィス家具 価 格 交 渉 可! 
◎ 目指せ★業界最安値 ★ ◎ オフィネット・ドットコム株式会社

注文から納品まで驚きの早さ!!【ASKULカタログ】はこちらから・・・

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] おまとめローン Windows7 冷え性対策 動画 掲示板 レンタルサーバー ライブチャット SEO