1

我编写了一个带有 awt 文本字段和一个按钮的 java 代码,如果我单击该按钮,我可以使用 JFileChooser 浏览文件。它需要检查文件是否有“.txt”扩展名。我写了下面的代码,但没有得到验证。

我哪里错了?请帮助确定我错在哪里。

         try{
            final JFileChooser chooser = new JFileChooser();
            chooser.showOpenDialog(null);
            chooser.addChoosableFileFilter(new FileFilter() {
            public String getDescription() {
                return "*.txt";
            }
            public boolean accept(File filename)
            {

                if(filename.getName().endsWith(".txt")){
                    return true;
                }
                else{
                System.out.println("Browsed dest file extension must be .txt");
                return false;
                }}
            });
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(f,"Exception occurred");
        }
4

2 回答 2

6

你的问题是:

chooser.showOpenDialog(null);

停止执行代码,直到用户选择一个文件。添加后添加此行FileFilter,一切都应该可以正常工作。

小解释:

方法showOpenDialog(Component c)块执行当前线程,直到用户操作和下一行代码将在用户选择文件后执行。如果您在FileFilter再次添加 a 后调用,showOpenDialog它将按预期工作。

于 2013-01-26T11:19:36.620 回答
4

I would suggest using the @Override annotation for the accept method - see this link @Override explained in Oracle Documentation.

Plus, it would be best to use filename.getName().toLowerCase().endsWith(".txt") instead filename.getName().endsWith(".txt") to ensure that files with the extension .TXT will pass the filter as well.

于 2013-01-26T11:34:55.970 回答