JFileChooserは、ファイルを選択するダイアログ。
(ファイル選択でなく、) ドロップされたファイルを処理したい場合は、DropTargetクラスを使用。
|
HTMLファイルを読み込む為に選択するダイアログは、以下の通り。
import java.io.File; import javax.swing.JFileChooser;
public void openFile() { JFileChooser fc = new JFileChooser(); fc.setDialogTitle("HTMLファイルを開く"); // fc.setDialogType(JFileChooser.OPEN_DIALOG); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setMultiSelectionEnabled(true); fc.setFileFilter(new FileFilter() { //無名内部クラス使用 public boolean accept(File f) { if (f.isDirectory()) return true; //ディレクトリは表示 //拡張子がhtml,htmのものだけ表示 String name = f.getName(); int n = name.lastIndexOf('.'); if (n > 0) { String ext = name.substring(n); return ext.equalsIgnoreCase(".html") || ext.equalsIgnoreCase(".htm"); } return false; } public String getDescription() { return "HTMLファイル(*.html, *.htm)"; } }); int selected = fc.showOpenDialog(null); if (selected == JFileChooser.APPROVE_OPTION) { File[] fs = fc.getSelectedFiles(); for (int i = 0; i < fs.length; i++) { File f = fs[i]; // fを使ってファイルを読み込む処理を実装する } } }
この例では毎回JFileChooserのインスタンスを作り直しているが、作るのは一度だけにして、同じインスタンスに対してshowOpenDialog()のみを実行するようにすれば、以前開いた場所が保持されている。[2007-02-03]
メソッド | 概要 | 値 | 備考 | 更新日 |
---|---|---|---|---|
setDialogTitle | ダイアログのタイトルを設定 | |||
setDialogType | 何の為のダイアログかを指定 (showOpenDialog()やshowSaveDialog()を使う場合は不要) |
OPEN_DIALOG | 開く為のダイアログ | |
SAVE_DIALOG | 保存する為のダイアログ | |||
CUSTOM_DIALOG | 独自のダイアログ | 2007-02-03 | ||
setFileSelectionMode | 選択可能な種類を指定 | FILES_ONLY | ファイルのみ選択可能 | |
DIRECTORIES_ONLY | ディレクトリのみ選択可能 | |||
FILES_AND_DIRECTORIES | ファイルもディレクトリも選択可能 | |||
setMultiSelectionEnabled | 複数選択可能かどうかを指定 | |||
setCurrentDirectory | デフォルトのディレクトリを指定 | ファイルを指定しても、そのディレクトリになる。 | 2007-02-03 | |
setSelectedFile | デフォルトのファイル(単一)を指定 | このメソッドを使う場合、setCurrentDirectory()は不要 | 2007-02-03 | |
setSelectedFiles | デフォルトのファイル(複数)を指定 | 2007-02-03 | ||
setFileFilter | ダイアログに表示するファイルを絞る為のフィルターを指定 | フィルターは、FileFilterクラスを継承して自分で実装する
。 JDK1.6では、単純な拡張子指定用のクラスが用意された。 |
2009-09-19 | |
setAcceptAllFileFilterUsed | 「全ファイル」のフィルターを表示するかどうかを指定 | 2007-02-03 | ||
showOpenDialog | 読込用ダイアログを表示し、結果を取得 (内部でsetDialogType()使用) |
APPROVE_OPTION | ファイルが選択された | 2007-02-03 |
CANCEL_OPTION | ダイアログがキャンセルされた | |||
showSaveDialog | 保存用ダイアログを表示し、結果を取得 (内部でsetDialogType()使用) |
APPROVE_OPTION | ファイルが選択された | 2007-02-03 |
CANCEL_OPTION | ダイアログがキャンセルされた | |||
getSelectedFiles | 選択されたファイル名(複数)を取得 | |||
getSelectedFile | 選択されたファイル名(単一)を取得 |
JDK1.6から、拡張子を指定する場合のFileFilterが用意されたらしい。[2009-09-19]
import javax.swing.filechooser.FileNameExtensionFilter;
fc.setFileFilter(new FileNameExtensionFilter("HTMLファイル(*.html, *.htm)", "html", "htm"));
コンストラクターの第1引数はdescription(説明)、第2引数以降は可変引数で、拡張子を列挙する。