jFileChooser.showOpenDialog () замораживает приложение .. нет ошибок / исключений .. пробовал несколько вещей - PullRequest
4 голосов
/ 19 марта 2011

Я делаю проект Summarizer в NetBeans 6.9.1 в том смысле, что у меня есть кнопка «Обзор», которая должна открыть диалоговое окно открытия в JFileChooser.Я посмотрел здесь: очень похожий вопрос о stackoverflow

Моя проблема точно такая же, я попытался установить текущий каталог, который пытался на другой аналогичный вопрос на stackoverflow, но даже этоЯ не могу понять, в чём, чёрт возьми, моя ошибка.Я думаю, что это та же ошибка, что все не работает на 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);
            }
        });
    }             

Скажите, пожалуйста, нужна ли какая-либо другая часть кода, и, пожалуйста, помогите.Я почесал голову прямо сейчас.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Я бы предположил, что ваша проблема заключается в чтении 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());
0 голосов
/ 20 июля 2011

Вы уверены, что проблема только в JFileChooser?Является ли ваш F: устройство жестким диском, сетевым ресурсом, USB-накопителем?Если нет, не могли бы вы попробовать заменить устройство на жесткий диск?Запустите этот тест внутри 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);
    }

}
...