21

プログラムに を入れていJFileChooserますが、それは画像しか取りません。そこで、フィルターを追加することにしました。

コード

import javax.swing.*;

public class fileChooser {

 public static void main(String[] args) {
    JPanel panel = new JPanel();
    
    final JFileChooser fc = new JFileChooser();
    int file = fc.showOpenDialog(panel);
    fc.addChoosableFileFilter(new ImageFilter());
    fc.setAcceptAllFileFilterUsed(false);
 }
}

Javaチュートリアルから直接得ました。しかし、Eclipse は以下をエラーとして下線で示します。

fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);

助言がありますか?

4

6 に答える 6

33

プログラムに JFileChooser を入れていますが、それは画像しか取りません。

その OS でその JRE によってサポートされるタイプのリストについては、を使用してImageIOください。

FileFilter imageFilter = new FileNameExtensionFilter(
    "Image files", ImageIO.getReaderFileSuffixes());

見られるタイプ - Java 1.6/Windows 7

bmp
jpg
jpeg
wbmp
png
gif

注:そのリストをハードコーディングしないでください。バージョンごと、OS ごとに変更される場合があります。例えば

  1. Windows が BMP の読み込みをサポートしていることに驚きはしませんが、Mac ではサポートされますか?
  2. WBMPを見て、そのようなフォーマットの存在を知りました。

がインストールされていれば、そのリストにはさらに多くの形式があります。

セレクターに表示されるフィルター

画像セレクター

于 2012-11-23T00:05:16.720 に答える
11

の引数はfc.addChoosableFileFilter()のサブクラスでなければなりませんjavax.swing.filechooser.FileFilter。たとえば、コードを次のように変更できます。

fc.addChoosableFileFilter(new FileNameExtensionFilter("Image Files", "jpg", "png", "tif");
于 2012-11-22T17:54:40.673 に答える
3

間違った ImageFiler クラスを使用しています :-)

チュートリアルの ImageFilter は、インポートしている java.awt パッケージのものではありません。この ImageFilter は、javax.swing.filechooser.FileFilter を実装する必要があります。

チュートリアルで定義されている他の ImageFilter クラスがあるかどうかを確認して使用してください。

適切なファイルフィルターの例:

new JFileChooser().addChoosableFileFilter(new FileFilter() {

        @Override
        public boolean accept(File f) {
            // TODO Auto-generated method stub
            return f.getName().endsWith(".jpg");
        }

        @Override
        public String getDescription() {
            return "JPEG files";
        }

    });
于 2012-11-22T17:50:21.743 に答える