Java Swing JFileChooser

2018-01-09 19:23 更新

Java Swing教程 - Java Swing JFileChooser


Java Swing教程 - Java Swing MDI...

我們可以創(chuàng)建一個JFileChooser類的對象。它允許用戶僅選擇文件,僅選擇目錄,或兩者。

我們可以創(chuàng)建一個JFileChooser類的對象。它允許用戶僅選擇文件,僅選擇目錄,或兩者。...

我們可以從我們調用來顯示對話框的方法中檢查返回值,它是一個int。

我們可以從我們調用來顯示對話框的方法中檢查返回值,它是一個int。...

要獲取所選文件,請調用getSelectedFile()或getSelectedFiles()方法,它們分別返回File對象和File數(shù)組。

要獲取所選文件,請調用getSelectedFile()或getSelectedFiles()方法,它們分別返回File對象和File數(shù)組。...

默認情況下,JFileChooser開始顯示用戶的默認目錄中的文件。

我們可以在其構造函數(shù)中指定初始目錄或使用其setCurrentDirectory()方法。

以下編解碼器使用默認初始目錄創(chuàng)建文件選擇器

JFileChooser fileChooser  = new JFileChooser();

以下代碼創(chuàng)建文件選擇器,其初始目錄為C:\\ myjava。

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

以下代碼創(chuàng)建文件選擇器,其初始目錄為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,則顯示文件。 否則,不顯示文件。

以下代碼創(chuàng)建并設置文件過濾器,以僅顯示目錄或具有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類到文件擴展名的文件。

它的構造函數(shù)接受文件擴展名及其描述。第二個參數(shù)是一個可變長度參數(shù)。

在創(chuàng)建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);
}

要獲取文件類型的關聯(lián)圖標,請使用文件選擇器getIcon(java.io.File file)方法,它返回一個Icon對象。 注意,我們可以使用JLabel組件顯示一個Icon對象。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號