簡體   English   中英

以編程方式為 JFileChooser 設置文件過濾器

[英]Programmatically Setting Up File Filter for JFileChooser

我目前正在嘗試通過使用數組(描述為一維,擴展為二維)來添加文件過濾器,如下所示:

void findFile(){
    chooser = new JFileChooser();
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle("Choose file to upload");
    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    chooser.setAcceptAllFileFilterUsed(true);

    ft = new FileType(this.chooser);
... //rest of code
}

文件類型.java

package function;

import java.io.FileFilter;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class FileType {

    private String[] desc = {
        "Word Document (.doc, .docx)", "Excel Document (.xlsx, .xls)"
    };

    private String[][] ext = {
            {"doc", "docx"}, {"xlsx", "xls"}    
    };

    public int counts = desc.length;

    FileNameExtensionFilter fe;
    JFileChooser session;

    public FileType(JFileChooser session){
        this.session = session;

        generateCode();
    }

    void generateCode(){
        for(int i = 0; i < counts; i++){
            for(String pass : ext[i]){
                System.out.println(pass);
                generateFileType(desc[i], pass);    
            }
        }
    }

    public void generateFileType(String a, String...b){

        for(String x : b){
            fe = new FileNameExtensionFilter(a, x);
        }

        session.addChoosableFileFilter(fe);
    }

    /*public JFileChooser generateFilter(JFileChooser a){
        generateCode();
        for(int i = 0; i < counts; i++){
            a.addChoosableFileFilter(fe);
        }

        return a;
    }*/

}

一切(幾乎)都有效,但我無法弄清楚如何將擴展合並為一個描述(即它重復描述,但使用不同的擴展過濾器)。 圖像在這里。

雖然確實使用了可變參數,但我似乎無法找到一種在for循環中一次傳遞多個值的方法

好吧,我真是個笨蛋。 這是答案:

void generateCode(){
    for(int i = 0; i < counts; i++){
        generateFileType(desc[i], ext[i]);  

    }
}

public void generateFileType(String a, String...b){
        fe = new FileNameExtensionFilter(a, b);


    session.addChoosableFileFilter(fe);
}

我上次做的是遍歷擴展數組,這使得程序一個一個地傳遞值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM