阅读(812) (0)

Java Swing JFileChooser

2017-01-09 19:23:21 更新

Java Swing教程 - Java Swing JFileChooser


Java Swing教程 - Java Swing MDI...

我们可以创建一个JFileChooser类的对象。它允许用户仅选择文件,仅选择目录,或两者。

我们可以创建一个JFileChooser类的对象。它允许用户仅选择文件,仅选择目录,或两者。...

我们可以从我们调用来显示对话框的方法中检查返回值,它是一个int。

我们可以从我们调用来显示对话框的方法中检查返回值,它是一个int。...

要获取所选文件,请调用getSelectedFile()或getSelectedFiles()方法,它们分别返回File对象和File数组。

要获取所选文件,请调用getSelectedFile()或getSelectedFiles()方法,它们分别返回File对象和File数组。...

默认情况下,JFileChooser开始显示用户的默认目录中的文件。

我们可以在其构造函数中指定初始目录或使用其setCurrentDirectory()方法。

以下编解码器使用默认初始目录创建文件选择器

JFileChooser fileChooser  = new JFileChooser();

以下代码创建文件选择器,其初始目录为C:\\ myjava。

JFileChooser fileChooser  = new JFileChooser("C:\\myjava");

以下代码创建文件选择器,其初始目录为C:\\ myjava。...

选择文件和目录

fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

选择文件和目录...

fileChooser.setMultiSelectionEnabled(true);

以下代码显示如何显示打开的文件选择器对话框,并检查用户是否选择了文件。如果用户进行选择,请在标准输出上打印文件路径。

// Display an  open  file  chooser
int  returnValue = fileChooser.showOpenDialog(null);
import java.io.File;
//from w  w  w .j a  va  2 s.co m
import javax.swing.JFileChooser;

public class Main {
  public static void main(String[] args) {
    // Display an open file chooser

    JFileChooser fileChooser = new JFileChooser();

    int returnValue = fileChooser.showOpenDialog(null);

    if (returnValue == JFileChooser.APPROVE_OPTION) {
      File selectedFile = fileChooser.getSelectedFile();
      System.out.println("we selected: " + selectedFile);
    }

  }
}

以下代码显示如何显示打开的文件选择器对话框,并检查用户是否选择了文件。如果用户进行选择,请在标准输出上打印文件路径。...

更改对话框的标题

fileChooser.setDialogTitle("Open a  picture file");

更改对话框的标题...

fileChooser.setApproveButtonText("Open File");

使用打开文件选择器附加为其标题并批准按钮的文本

int  returnValue = fileChooser.showDialog(null, "Attach");
if (returnValue == JFileChooser.APPROVE_OPTION)  {
    File selectedFile = fileChooser.getSelectedFile(); 
    System.out.println("Attaching file: "  + selectedFile);
}

设置批准按钮的文本不会更改方法的返回值。



文件过滤器

JFileChooser可以在对话框中显示文件之前使用文件过滤器,该文件过滤器是应用的一组条件。

文件过滤器是FileFilter类的一个对象,它位于javax.swing.filechooser包中。

FileFilter类是一个抽象类。 我们需要重写accept()和getDescription()方法。

当文件选择器要显示文件时,使用文件引用调用accept()方法。 如果accept()方法返回true,则显示文件。 否则,不显示文件。

以下代码创建并设置文件过滤器,以仅显示目录或具有doc扩展名的文件。

import java.io.File;
//from   ww  w.  ja v a 2  s .com
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class Main {
  public static void main(String[] args) {
    // Create a file filter to show only a directory or .doc files
    FileFilter filter = new FileFilter() {
      @Override
      public boolean accept(File f) {
        if (f.isDirectory()) {
          return true;
        }

        String fileName = f.getName().toLowerCase();
        if (fileName.endsWith(".doc")) {
          return true;
        }

        return false; // Reject any other files
      }

      @Override
      public String getDescription() {
        return "Word Document";
      }
    };

    // Set the file filter
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileFilter(filter);

    int returnValue = fileChooser.showDialog(null, "Attach");
    if (returnValue == JFileChooser.APPROVE_OPTION) {
      // Process the file
    }

  }
}


文件名扩展过滤器

我们可以使用FileNameExtensionFilter类继承自FileFilter类到文件扩展名的文件。

它的构造函数接受文件扩展名及其描述。第二个参数是一个可变长度参数。

在创建FileNameExtensionFilter类的对象后,我们需要调用文件选择器的addChoosableFileFilter()方法来设置过滤器。

下面的代码添加“java"和“jav"作为文件扩展名过滤器。

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
/*from   w  w w.j  av  a2 s.c  om*/
public class Main {
  public static void main(String[] args) {
    FileNameExtensionFilter extFilter = new FileNameExtensionFilter(
        "Java Source  File", "java", "jav");
    // Set the file filter
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.addChoosableFileFilter(extFilter);

    int returnValue = fileChooser.showDialog(null, "Attach");
    if (returnValue == JFileChooser.APPROVE_OPTION) {
      // Process the file
    }

  }
}

要禁用“接受所有文件过滤器"

fileChooser.setAcceptAllFileFilterUsed(false);

要检查是否启用“接受所有文件过滤器"  请使用isAcceptAllFileFilterUsed()方法,如果文件选择器正在使用此过滤器,则返回true。

使用getAcceptAllFileFilter()方法获取“接受所有文件过滤器"的引用。

以下代码设置“接受所有文件过滤器"(如果尚未设置)。

if (!fileChooser.isAcceptAllFileFilterUsed())  {
    fileChooser.setAcceptAllFileFilterUsed(true);
}

要获取文件类型的关联图标,请使用文件选择器getIcon(java.io.File file)方法,它返回一个Icon对象。 注意,我们可以使用JLabel组件显示一个Icon对象。