2014-01-14 2 views
0

Я пытаюсь работать в JFileChooser. Чтобы получить файл, выбранный из другого класса, мне все равно, как выглядит кнопка, но когда кто-то нажимает на нее. он должен показать JFileChooser для выбора файла srt (например, текстового файла, но другого типа), и он должен его прочитать.Выбор файла srt с помощью JFileChooser и его чтение

это мой первый класс

package AnimeAid; 
import java.io.*; 
import javax.swing.*; 

public class ReadFile { 
    private File ourFile= null; 
    private static final JFileChooser selectSrtFile = new JFileChooser(); 
    String filePath = ""; 

     public ReadFile(){ 

     } 

    public File getSelectFile(){ 
      selectSrtFile.setFileSelectionMode(JFileChooser.FILES_ONLY); 
      selectSrtFile.showSaveDialog(null); 
      ourFile = selectSrtFile.getSelectedFile(); 
      filePath = ourFile.getAbsolutePath(); 
      return ourFile; 
    } 

     public String readFileInput(){ 
      try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(getSelectFile()), "UTF-8")); 
       String line; 
       while ((line = reader.readLine()) != null) 
       { 
        System.out.println(line); 
       } 
      }catch(IOException ex){ 
      return "there is wrong"; 
      } 
      return "file is added"; 

     } 

} 

отсканированные класс

package AnimeAid; 

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


/** 
* 
* @author isslam 
*/ 
public class GuiInterface extends JFrame { 

    JTable table; 
    JButton is; 
    ReadFile t; 

    public GuiInterface(String title){ 
    setSize(900, 700); 
    setTitle(title); 
    setDefaultCloseOperation(GuiInterface.EXIT_ON_CLOSE); 
    is = new JButton(); 
    t = new ReadFile(); 
    Container cp = getContentPane(); 
    cp.add(is); 

    is.addActionListener(new addButtonWatcher()); 

    } 



    private class addButtonWatcher implements ActionListener{ 

     @Override 
     public void actionPerformed(ActionEvent a){ 
      Object buttonPressed=a.getSource(); 
      if(buttonPressed.equals(is)) 
      { 
       t.getSelectFile(); 
      } 
} 
    } 
} 

сообщение об ошибке

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: animeaid.GuiInterface 
    at animeaid.main.main(main.java:15) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 0 seconds) 
+0

Похоже, вы используете NetBeans, так что вы, возможно, столкнетесь с теми же проблемами, как описаны в этих вопросы: http://stackoverflow.com/questions/20165965/java-runtimeexception-uncompilable-source-code-erroneous-tree-type и http://stackoverflow.com/questions/2333285/java-lang-runtimeexception-uncompilable- source-code-what-can-cause-this. Ответы на эти вопросы предполагают отключение «Компиляция при сохранении», что может не исправить вашу проблему, но компилятор может показать вам фактическую ошибку в вашем коде. – andersschuller

+0

Я отключил его, я даю мне еще одну ошибку, но я думаю, что нет необходимости отключать его, просто нажмите на чистую и строю, но все же мне нужна помощь с этой проблемой. –

+0

делает другой класс, передавая вам имя файла, или вам интересно, как использовать JFileChooser для получения имени файла (затем прочитать файл)? – rogerdpack

ответ

1

Похоже, ваши два класса имеют разные пакеты:

package animeFactor; 
      ^

и

package animefactor; 
      ^

Я считаю, что имена пакетов Java чувствительны к регистру, поэтому, несмотря на то, что у вас есть (вероятно) поставить два файла в той же папке, то GuiInterface класс не может использовать ReadFile класс без импорта Это.

Либо изменить определение пакета, чтобы быть такими же, или добавить оператор импорта в GuiInterface:

import animeFactor.ReadFile; 
+0

, это правда, спасибо, что я обновлю проблему, чтобы вы могли присмотреться после исправления проблемы, потому что это не единственный –

+0

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

+0

Я думаю, что это должен быть класс сканера –

Смежные вопросы