SWT Tips and Samples 基礎編 > FileDialog |
|
FileDialogFileDialogはファイルを選択するためのダイアログです。コンストラクタ引き数にスタイルを指定することで、さまざまなダイアログを作成することができます。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日 |
- PR -
【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!
オフィス用品・オフィス家具 価 格 交 渉 可!
|
||||
|
|||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||