dポイントプレゼントキャンペーン実施中!

初めまして。
現在FileDialogを用いてプログラム作成中です。
ダイアログを開いて、
 「ファイルの種類」が
初期状態では
 「すべてのファイル(*.*)」になっています。

この点を改善したいのです。
例えば.xlsのように。

どなたかご存知の方、教えてください。
よろしくお願いします。

A 回答 (2件)

AWTのFileDialogではFilenameFilterを使ってファイルの種類を選別できますが、Windowsでは動作しないはずです。



SwingのJFileChooserならFileFilterを使ってOSの制限なくファイルの種類を選別できます。
    • good
    • 0
この回答へのお礼

コメント、
どうもありがとうございました。
上記の方と同じになってしまいますが、
自分としてはSwing使わずに
 fd=new FileDialog(
this , "File Open" , FileDialog.LOAD);
fd.setFile("*.xls");
とやっています。
これでは、エクセルのみ表示できます。
が、
 フィルの種類の所で、全てのファイル(*.*)

 エクセルのみ
としたいんです。
 もし知っていれば、ご指導お願いします

お礼日時:2004/09/02 22:04

簡単なプログラムを組んでみました。


以下のコードを実行してみてください。
このコードに答えがあります。
解読してください。

####

import java.io.File;
import java.util.*;
import javax.swing.*;
import javax.swing.filechooser.*;


class AAA {
public static void main(String[] args) {
MyFileChooser fc = new MyFileChooser();
MyFileFilter ff = new MyFileFilter();
fc.setFileFilter(ff);
while(true) {
int retValue = fc.showOpenDialog(null);
if (retValue == JFileChooser.APPROVE_OPTION) {
System.out.println("OK : ボタンが押された");

File curDir = fc.getCurrentDirectory();
System.out.println("[" + curDir.getName() + "]ディレクトリの");

String fullpath = fc.getSelectedFile().getPath();
if (!fullpath.endsWith("." + "xls")) {
fullpath += ("." + "xls");
}

System.out.println("[" + fullpath + "]ファイルが");
System.out.println("選択された");
} else {
System.out.println("終了");
System.exit(0);
}


//fc = new MyFileChooser(curDir);

}
}
}


class MyFileChooser extends JFileChooser {
private MyFileFilter mlff = new MyFileFilter();

public MyFileChooser() {
super();
}

public MyFileChooser(File curDir) {
super(curDir);
}

}


class MyFileFilter extends FileFilter {

public MyFileFilter() {
super();
}


public boolean accept(File file) {
if (file != null) {
/* ディレクトリなら */
/* true を返す */
if (file.isDirectory()) {
return true;
}

String extention = getExtentionFromFile(file);
if (extention == null) {
} else {
if (extention.equals("xls")) {
return true;
}
}
}
return false;
}

public String getDescription() {
return "エクセルファイル(xls)"; //ここは適当に好きな文言に変える
}

private String getExtentionFromFile(File file) {
if(file == null) {
return null;
}

String filename = file.getName();

/* 最後のピリオド位置を取得 */
int i = filename.lastIndexOf('.');
if(i==-1) {
return null;
}

if ((i>0) &&
(i< (filename.length()-1) ) ) {
/* 最後のピリオドより後の文字列を小文字で返す */
return filename.substring(i+1).toLowerCase();
} else {
return null;
}
}
}
    • good
    • 0
この回答へのお礼

簡単なプログラム例まで作成してもらって、
ありがとうございました。
ただ、自分のレベルが足らず、又Swingをやっていない
ため、ちょっと理解できませんでした。
ごめんなさい。
自分としてはSwing使わずに
 fd=new FileDialog(
this , "File Open" , FileDialog.LOAD);
fd.setFile("*.xls");
とやっています。
これでは、エクセルのみ表示できます。
が、
 フィルの種類の所で、全てのファイル(*.*)

 エクセルのみ
としたいんです。
 もし知っていれば、ご指導お願いします

お礼日時:2004/09/02 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!