2011-11-27 11 views
5

Là một dự án nhỏ, tôi nghĩ rằng nó sẽ mát mẻ để tạo một trình soạn thảo văn bản. Tôi hiện đang bị kẹt khi mở tệp. Đây là mã của tôi để mở file (e là một ActionEvent, mở là một JMenuItem):Mở các tệp bằng 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())); 
      } 
     } 

    } 

Các khối try là đem lại cho tôi những rắc rối. Eclipse đang nói rằng getSelectedFile() không được xác định cho loại JMenuItem. Nó cũng có vẻ không được xác định cho MenuItem s. Có cách nào khác để tiếp cận điều này, hoặc phương pháp khác hoạt động giống nhau không?

+0

Nó nên được 'choice.getSelectedFile(); ' – Krishan

+0

Phương thức đó là trên JFileChooser: choice.getSelectedFile(); –

+0

Có điều gì tốt hơn là JFileChooser không. Điều gì nếu bạn muốn làm cho nó trông giống như nó mở trong Microsoft Open hộp. –

Trả lời

9

Bạn cần phải gọi getSelectedFile() trên JFileChooser một khi nó đã trở lại, vì vậy thay đổi mã của bạn để:

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

Tôi khuyên bạn nên thêm một số văn bản mô tả để giải thích các phần có liên quan của mã của bạn. – 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

Thêm mô tả sẽ hữu ích. –

+0

Bản sao xấu của tôi mã và chạy nó. nó sẽ mở một tập tin văn bản và lưu nó ra. – user4540837