4

我正在 NetBeans 6.9.1 中创建 Summarizer 项目,因为我有一个“浏览”按钮,它应该在 JFileChooser 上打开一个打开的对话框。我看过这里:关于stackoverflow的非常相似的问题

我的问题是一样的,我尝试设置当前目录,该目录在stackoverflow上的另一个类似问题上尝试过,但即使这在我的PC上也不起作用。

我仍然无法弄清楚我的错误到底是什么。我认为事情没有在 EDT 上运行是同样的错误。我正在使用netbeans,代码很大。我找不到在哪里对 EDT 进行更改。所以我只会发布它的相关部分。请查看并告诉我我需要做什么来解决我的问题?

 private void cmdBrowseActionPerformed(java.awt.event.ActionEvent evt) {                                          


        jFileChooser1.setCurrentDirectory(new File("F:/BE-Project/Summarizer"));
        jFileChooser1.setDialogTitle("Open File");
        jFileChooser1.setFileSelectionMode(JFileChooser.FILES_ONLY);
        int returnVal = jFileChooser1.showOpenDialog(Summarizer.this);
        if (returnVal== JFileChooser.APPROVE_OPTION) {
            try {

                fin = jFileChooser1.getSelectedFile();
                fileContents = Files.readFromFile(fin,"ISO-8859-1");
                tAreafileContents.setText( fileContents );
                txtInputFile.setText( fin.getAbsolutePath() + " -- " + fin.getName());
                tAreafileContents.setCaretPosition(tAreafileContents.getDocument().getLength());
            }
             catch (Exception e) {
                 System.out.println(e);
             }

        }

        else System.out.println("there is some error");
    }                           

/* netbeans generated code */
 public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Summarizer().setVisible(true);
            }
        });
    }             

请告诉我是否需要任何其他代码部分,请提供帮助。我现在正在挠头。

4

2 回答 2

1

我建议您的问题在于File从 EDT 中的磁盘读取。

 //this should be in a worker thread
 fileContents = Files.readFromFile(fin,"ISO-8859-1");

 //this then gets dumped back on the EDT
 tAreafileContents.setText( fileContents );
 txtInputFile.setText( fin.getAbsolutePath() + " -- " + fin.getName());
 tAreafileContents.setCaretPosition(tAreafileContents.getDocument().getLength());
于 2011-07-20T01:54:31.880 回答
0

您确定只是 JFileChooser 问题吗?你的F:unit是硬盘、网络共享、U盘吗?如果不是,您可以尝试将设备更改为硬盘驱动器吗?在 netbeans 和命令行中运行这些测试,读取 F: 上的文件以及与 F 不同的其他单元

import java.io.*;

public class FileSize 
{
    public static void main(String [] args)
    {
        //String fileName = "F:/BE-Project/Summarizer/someFile.txt");
        String fileName = "FileSize.java";
        long size = new File(fileName).length();
        System.out.println("size: " + size);
    }

}
于 2011-07-20T00:28:50.560 回答