JFileChooser文件选择器在保存时的 文件类型默认只有'所有文件',怎么在里面添加 txt,jpg 类型的文件,还怎么在点保存时过滤输入文件名中的特殊字符,如记事本样 过滤的特殊字符,“\  /  *  ?  :  |  "  <  >”我在用JFileChooser保存文件时怎么把文件名中的这些特殊字符 过滤出来啊,尤其是”\  * “  这两个符号,怎么都都过滤不出来,请知道的大虾们指导下,小弟急用啊,最好有个什么例子,,谢谢

解决方案 »

  1.   

    JFileChooser.setFileChooser(new FileNameExtensionFilter("选择txt\jpg文件",new String[]{"txt","jpg"});
    可以过滤掉其他的文档
      

  2.   

    晕  写错了  
    JFileChooser.setFileFilter(new FileNameExtensionFilter("选择txt\jpg文件",new String[]{"txt","jpg"}); 
      

  3.   

    一看就知道LZ没查API
    以下代码弹出一个针对用户主目录的文件选择器,其中只显示 .jpg 和 .gif 图像:     JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "JPG & GIF Images", "jpg", "gif");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showOpenDialog(parent);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           System.out.println("You chose to open this file: " +
                chooser.getSelectedFile().getName());
        }since 1.6
      

  4.   

    自己写个文件过滤类啊
        // 文件后缀过滤
            jFileChooser1.setAcceptAllFileFilterUsed(false);
           jFileChooser1.addChoosableFileFilter(new SqlFileFilter("sql"));
      
    public class SqlFileFilter extends FileFilter {
        String sql;
        public SqlFileFilter(String ext) {
            sql = ext;
        }
        public boolean accept(File file) {
         if (file.isDirectory()) {
          return true;
         }
         String fileName = file.getName();
         int index = fileName.lastIndexOf('.');
         if (index > 0 && index < fileName.length() - 1) {
          String extension = fileName.substring(index + 1).toLowerCase();
          // 文件过滤,后缀为.sql的文件返回true
          if (extension.equals(sql))
           return true;
         }
         return false;
        }
        // 文件类型描述
        public String getDescription() {
         if (sql.equals("sql"))
          return "Files(*.sql)";
         return "";
        }
    }
    以前写的一个东西希望对你有帮助
      

  5.   

    JFileChooser 可以输入啊,必须过滤
      

  6.   

    File f=chooser.getSelectedFile();
    String outFileName=chooser.getName(f);//获得你输入的名字       //   然后对这里的outFileName过滤就行了!!!!
    f.replaceAll("","")//这里用正则  过滤  把那些特殊字符换为 空格
    f=f.trim();//去掉空格
      

  7.   

    f.replaceAll("","")
    这里需要加上过滤字符的正则表达式
      

  8.   

    thc1987  哎, 我落后了,我用的JDK1.6  却看的 jdk1.5 的api  jdk1.5里 没有
      

  9.   

    谢谢各位的回答 ,,可以请各位处理处理"*",星号吗? 
    JFileChooser 点保存时 "*"就自动就跑到 文件类型里去了,这怎么办啊
      

  10.   

    Good luck~fileChooser.addChoosableFileFilter(new ImageFileFilter(".txt"));
    ======================================================================public class ImageFileFilter
        extends FileFilter {  protected String extension;  public ImageFileFilter(String extension) {
        this.extension = extension;
      }  /**
       * Returns true if the given file has the correct extension, false if not.
       *
       * @param f File
       * @return boolean
       */
      public boolean accept(File f) {
        boolean accept = false;
        String fileName = null;
        if (f != null) {
          if (f.isDirectory()) {
            accept = true;
          }
          else {
            fileName = f.getPath().toLowerCase();
            if (fileName.endsWith(extension)) {
              accept = true;
            }
          }
        }
        return accept;
      }  /**
       * Returns the file description
       *
       * @return String
       */
      public String getDescription() {
        return extension;
      }
    }
      

  11.   

    littlemonster     你这个可以处理星号那问题
      

  12.   

       过滤  ,“\  /  *  ?  :  |  "  <  >”  的正则表达式怎么写啊?
      

  13.   

       过滤  ,“\  /  *  ?  :  |  "  <  >”  的正则表达式怎么写啊?
      

  14.   

    private static String filterSpecialChar(String str)
      {
            String[] specialChar={"'","="," ","\\","/","*"};
            String s;
            s=str;
            for(int i=0;i<specialChar.length;i++)
            {
                s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
            }
            return(s);
        }
      

  15.   

    lz12366007  有QQ嘛    说下 我给你截几张图 看看  
      

  16.   

    \  * 这两个是jdk就自动过滤的,通过api获得的路径根本就获取不到这两个字符。
    jdk底层对这两个字符有特殊处理。
      

  17.   

    通过replace  是把所有的字符当做普通字符看待!!!
    这时是可以的
      

  18.   

       replace替换不了,"*"号的话,根本就取不到,也无从替换了
      

  19.   

    */\ert***/\  这是我输入的
    ert   这是输出  符合要求吗??
      

  20.   

    package JOptionPane;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.io.File;import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.filechooser.FileNameExtensionFilter;
    import javax.swing.filechooser.FileNameExtensionFilter;;public class TestJFileChooser {    public static void main(String[] args) {
            JFrame frame = new JFrame();
            JButton button = new JButton();
            JButton button1 = new JButton();
            button.setText("Save");
            button1.setText("提示");
            JPanel panel = new JPanel();
            final JFileChooser re = new JFileChooser() {
                public void approveSelection() {
                    if (this.getDialogType() == JFileChooser.SAVE_DIALOG) {
                        File file = this.getSelectedFile();
                        System.out.println("----- "+filterSpecialChar(file.getName()));
                        
                        if (!file.exists()) {
                            if (JOptionPane.showConfirmDialog(this, file.getPath()
                                    + "   已存在。\n要替换它吗?", "另存为",
                                    JOptionPane.YES_NO_OPTION,
                                    JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION) {
                                return;
                            }
                        }
                    }
                    super.approveSelection();
                }
            };
            re.setFileFilter(new FileNameExtensionFilter("*.txt",new String[]{"txt"}));         panel.add(button);
            panel.add(button1);
            frame.add(panel);
            button.addActionListener(new ActionListener() {            @Override
                public void actionPerformed(ActionEvent e) {
                    int temp = re.showSaveDialog(null);
                }
            });        button1.addKeyListener(new KeyAdapter(){            @Override
                public void keyPressed(KeyEvent e) {
                    System.out.println(e.getKeyCode());
                    System.out.println((int)e.getKeyChar());
                }
                
            });
            frame.setSize(600, 400);
            frame.setLocation(300, 300);        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        
        private static String filterSpecialChar(String str) 
        { 
            System.out.println("|"+str);
              String[] specialChar={"'","="," ","\\","/","*"}; 
              String s; 
              s=str; 
              for(int i=0;i <specialChar.length;i++) 
              { 
                  System.out.println("|"+str);
                  s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],""); 
              } 
              return s;
          }
    }
    ---------------------------------------------------------------------------我一输入星号一点   星号就跑到 文件类型里去了,这是我的代码,看看嘛?
      

  21.   

    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.regex.PatternSyntaxException;
    public class FilterChar 
    { /**
     * @param args
     */
    public static void main(String[] args) 
    {
    Scanner in=new Scanner(System.in);
    while(in.hasNext())
    {
    String str=in.nextLine();

    //str=StringFilter(str);
    str=filterSpecialChar(str);
    System.out.println(str);
    } }

      private static String filterSpecialChar(String str)
      {
            String[] specialChar={"'","="," ","\\","/","*"};
            String s;
            s=str;
            for(int i=0;i<specialChar.length;i++)
            {
                s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
            }
            return(s);
        }}
    这是一个例子  
    你的那代码看不错你想干啥!!