close

參考答案:

import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class JDD01
{
    public static void main(String args[])
    {
        new MyApp();
    }
}

class MyApp
{
    MyApp()
    {
        JFrame f = new JFrame();
        f.setSize(300, 200);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLocationRelativeTo(null);
        
        JFileChooser chooser = new JFileChooser();
        
        String[] exts={".java",".class"};
        AppFiles filter = new AppFiles(exts,"Java-Related Files");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showOpenDialog(f);
        
        if(returnVal==JFileChooser.APPROVE_OPTION)
            f.setTitle(chooser.getSelectedFile().getName());  //如果使用者有選擇檔案,改變視窗標題
        else
            f.setTitle("You don`t choose any file");  //沒有回傳值代表沒有選擇
    }
}

class AppFiles extends javax.swing.filechooser.FileFilter  //建立繼承FileFilter的class,命名為AppFiles
{
    String[] extensions;
    String description;
    
    AppFiles(String[] exts,String descr)
    {
        extensions = exts;
        description = descr;
        
        for(int i=0;i<exts.length;i++)
            extensions[i] = exts[i].toLowerCase();
    }

    @Override  //此Function為FileFilter強制實作
    public boolean accept(File f) {
        // TODO Auto-generated method stub
        if(f.isDirectory())  
            return true;
        else
        {
            String fname = f.getName().toLowerCase();  //取得完整檔名,並全數轉為小寫
            for(String s:extensions)
            {
                if(fname.endsWith(s))  //看字串的尾端是否和extentions內的字串相等 (比對副檔名)
                return true; //如果其中一個相等回傳true
            }
        }
        
        return false; //找不到就會跳出迴圈,回傳false
    }

    @Override //此Function為FileFilter強制實作
    public String getDescription() {
        // TODO Auto-generated method stub
        return description;  
    }
    
    
}


執行結果:

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dino 的頭像
    Dino

    Dino`s Note

    Dino 發表在 痞客邦 留言(0) 人氣()