appendix> Component> JFileChooser | TOPUPPREVNEXT |
下図のようなダイアログを開き、ファイルを選択させる仕組みをファイルチューザ といいます。 読み込み用のファイルを選択するもの、書き込み用のファイルを選択するもの、 選択ボタンに任意の文字列を表示するもの の3種類があります。 下図は、読み込み用です(選択ボタンに「開く」と表示される)。
ダイアログを開くときに表示するフォールダを指定したり、表示するファイルを限定したりすることができます。
表示するファイルを限定するために、 ファイル・フィルタ javax.swing.filechooser.FileFilter (クラス)を用います。
java.lang.Object
└ java.awt.Component
└ java.awt.Container
└ javax.swing.JComponent
└ javax.swing.JFileChooser
コンストラクタ | 機能 |
---|---|
JFileChooser ( String directory ) JFileChooser ( File directory ) |
どのディレクトリを最初に表示するかを、 directory で 指示します。 directory は、 文字列でフルパス( ルートディレクトリからの完全なパス )か、 File クラスのインスタンスを渡します。 null を指定するとユーザのホームディレクトリに、 また文字列 "." を指定すると、カレントディレクトリになります。 |
メソッド | 機能 | ||||||
---|---|---|---|---|---|---|---|
int showOpenDialog ( Component parent ) | 上図のように、右下に 「開く」と「取消し」ボタンのある
ダイアログを開きます。どちらのボタンが押されたかは、
返される値で示されます。返される値は次のとおり。
| ||||||
int showSaveDialog ( Component parent ) | 「開く」のかわりに、「保存」ボタンがついたダイアログを開きます。 | ||||||
int showDialog ( Component parent ,
String approveButtonText )
|
「開く」や「保存」のかわりに、 approveButtonText で指定した文字列を表示したボタンのついたダイアログを開きます。 | ||||||
File getSelectedFile() | 選択されたファイルに対する File オブジェクト が返されます。 得られたオブジェクトの getPath メソッドを呼ぶと 選択したファイルのフルパスが文字列で得られます。 | ||||||
void setFileSelectionMode( int mode ) | 選択の対象を指定します。 mode には次の値が指定可能です。
| ||||||
void setControlButtonsAreShown( boolean b ) | ボタンを表示するかどうかを指定します。 | ||||||
void setMultiSelectionEnabled( boolean b ) | 複数ファイルを選択できるかどうかを指定します。 | ||||||
File[] getSelectedFiles ( boolean b ) | 複数ファイルの選択が許される場合、選択されたファイルの配列を返します。 |
プログラム JFileChooserDemo1.java
実行例
プログラム JFileChooserDemo2.java
実行例
拡張子が txt と java のものだけを表示するようにします。
プログラム JFileChooserDemo3.java
実行例
ファイルタイプをプルダウンして 「全てのファイル」を選択すると右図のようになります。
javax.swing.filechooser.FileFilter クラスを継承した FileFilterForProgramAndData というファイルフィルタを用意し、 accept メソッドと getDescription メソッドを定義します(26〜38行目)。 accept メソッドは、選択対象としたファイルに対して true、 選択対象にしたくないファイルに対して false を返すようなメソッドを定義しておきます。
File クラス の インスタンス f から、 文字列のファイル名を取り出し、 さらに拡張子部分を取り出し小文字に変換してから、txt と java のいずれかに等しいかどうか比較しています。
このクラスのインスタンスを setFileFilter で設定すると、 必要な場合にコールバックされるようになります(9行目)。
更新日:2005-10-22