2011-11-27 29 views
5

Küçük bir proje olarak, bir metin editörünün güzel olacağını düşündüm. Şu anda dosyalar açılıyorum. Bu (açık bir JMenuItem olan e bir ActionEvent olan) dosyayı açmak için benim kodudur:JFileChooser ile dosya açma

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())); 
      } 
     } 

    } 

try bloğu başıma dert veriyor. Eclipse, JMenuItem türünde getSelectedFile() undefined olduğunu söylüyor. Ayrıca MenuItem s için tanımlanmamış gibi görünüyor. Buna yaklaşmanın başka bir yolu var mı, yoksa aynı şekilde çalışan başka bir yöntem var mı?

+0

; ' – Krishan

+0

Bu yöntem JFileChooser üzerindedir: choice.getSelectedFile(); –

+0

JFileChooser'ın daha iyi bir yolu var mı? Microsoft Open kutusuna açılmış gibi görünmesini isterseniz. –

cevap

9

Bunu geri gönderdikten hemen sonra JFileChooser üzerine getSelectedFile() diyoruz, yani için kodunuzu değiştirmeniz gerekir:) (O `choice.getSelectedFile olmalıdır

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

Kodunuzun ilgili bölümlerini açıklamak için açıklayıcı bir metin eklemenizi öneririm. – 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

Bir açıklama eklemek yardımcı olabilir. –

+0

Bozuk kodumu kopyala ve çalıştır. bir metin dosyası açar ve kaydeder. – user4540837