2011-11-27 10 views
5

Jako mały projekt poboczny, pomyślałem, że fajnie będzie zrobić edytor tekstu. Obecnie utknąłem przy otwieraniu plików. To jest mój kod do otwierania pliku (e jest ActionEvent, otwarty jest JMenuItem):Otwieranie plików za pomocą JFileChooser

else if (e.getSource() == open) { 
     JFileChooser choice = new JFileChooser(); 
     int option = choice.showOpenDialog(this); 
     if (option == JFileChooser.APPROVE_OPTION) { 
      try{ 
       Scanner scan = new Scanner(new FileReader((open).getSelectedFile().getPath())); 
      } 
     } 

    } 

Blok try daje mi kłopotu. Eclipse mówi, że getSelectedFile() jest niezdefiniowane dla typu JMenuItem. Wydaje się również nieokreślone dla MenuItem s. Czy istnieje inny sposób podejścia do tej kwestii lub inna metoda, która działa tak samo?

+0

powinno być 'choice.getSelectedFile(); ' – Krishan

+0

Ta metoda jest na JFileChooser: choice.getSelectedFile(); –

+0

Czy jest coś lepszego niż JFileChooser. Co jeśli chcesz sprawić, aby wyglądał tak, jak jest otwarty w oknie Microsoft Open. –

Odpowiedz

9

Trzeba zadzwonić getSelectedFile() na JFileChooser gdy już wrócił, więc zmienić swój kod do:

choice.getSelectedFile() 
3
private void selectfileActionPerformed(java.awt.event.ActionEvent evt) {           

    JFileChooser jFileChooser=new JFileChooser(); 
    StringBuffer buffer; 
    buffer = new StringBuffer(); 
    int result= jFileChooser.showOpenDialog(this); 
    if(result==JFileChooser.APPROVE_OPTION) 
    { 
     try { 
      FileReader reader; 
      reader = null; 
      JOptionPane.showMessageDialog(this,"hii user clicked open sysytem"); 
      File file=jFileChooser.getSelectedFile(); 
      reader=new FileReader(file); 
      int i=1; 
      while(i!=-1) 
      { 
       i=reader.read(); 
       char ch=(char) i; 
       buffer.append(ch); 

      } 

      notepad.setText(buffer.toString()); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (IOException ex) { 
      Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
}           
+1

Zalecam dodanie tekstu opisowego w celu wyjaśnienia odpowiednich sekcji kodu. – MasterAM

0
import java.awt.EventQueue; 

public class FileChooser extends JFrame 
{ 
    private JPanel contentPane; 
    String filename; 
    // main 
    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       try 
       { 
        FileChooser frame = new FileChooser(); 
        frame.setVisible(true); 
       } catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public FileChooser() 
    { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 
     // button to selct file 
     JButton btnNewButton = new JButton("Select file"); 
     btnNewButton.setBounds(10, 2, 89, 23); 
     contentPane.add(btnNewButton); 
     // area to display file content 
     final JTextArea textArea = new JTextArea(); 
     textArea.setBounds(10, 36, 414, 215); 
     contentPane.add(textArea); 
     // save button 
     final JButton btnSave = new JButton("Save"); 
     btnSave.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent arg0) 
      { 

       try 
       { 
        FileWriter writer = new FileWriter(filename.replace(".", 
          "_out.")); 
        BufferedWriter bwr = new BufferedWriter(writer); 

        bwr.write(textArea.getText()); 

        bwr.close(); 
        writer.close(); 
        System.out.println(textArea.getText()); 
       } catch (Exception e) 
       { 
        System.out.println("Error"); 
       } 
      } 
     }); 
     btnSave.setBounds(283, 2, 89, 23); 
     contentPane.add(btnSave); 
     // listen to button clicks 
     btnNewButton.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent ae) 
      { 
       JFileChooser fileChooser = new JFileChooser(); 
       int returnValue = fileChooser.showOpenDialog(null); 
       if (returnValue == JFileChooser.APPROVE_OPTION) 
       { 
        File selectedFile = fileChooser.getSelectedFile(); 
        filename = selectedFile.getAbsolutePath(); 

        try 
        { 
         FileReader reader = new FileReader(filename); 
         BufferedReader br = new BufferedReader(reader); 
         textArea.read(br, null); 
         br.close(); 
         System.out.println(textArea.getText()); 

        } catch (Exception e) 
        { 
         System.out.println("Error"); 
        }enter code here 

       } 

      } 
    enter code here 
     }); 

    } 
} 
+0

Dodawanie opisu byłoby pomocne. –

+0

Moja zła kopia kodu i uruchom go. otwiera plik tekstowy i zapisuje go. – user4540837

Powiązane problemy