2013-03-29 29 views
11

Tôi là người mới bắt đầu sử dụng Java. Tôi đang tạo một trình soạn thảo văn bản đơn giản trong netbeans 7 (.3) IDE, sử dụng trình soạn thảo GUI của nó. Vấn đề chính tôi phải đối mặt trong đó là tôi không thể làm cho nó để lưu/mở tập tin. Tôi đã tạo nút "lưu". Khi tôi thả trình chọn tệp, nó xuất hiện như một hộp thoại mở tệp bình thường được nhúng trong cửa sổ java mà không có chức năng nào cả. Tôi cũng đã thử tạo một jFileChooser mới khi nhấn nút Save (trong khung nhìn Source), nhưng nó không hoạt động.

Lưu tệp/mở hộp thoại tệp, sử dụng trình soạn thảo GUI Swing & Netbeans

Tóm lại, tôi cần một hộp thoại mở/lưu đơn giản. Khi nhấn nút "Lưu", hộp thoại lưu sẽ mở ra và lưu tệp ở bất kỳ nơi nào người dùng chọn với bất kỳ tên nào và đuôi .rtf hoặc .txt. (PS: có thể lưu một tệp bằng .docx hoặc .doc trong Java không?)
Khi btn "Mở" được mở, nó sẽ mở một tệp bằng .rtf hoặc .txt (một lần nữa, nó có thể mở được không. docx hoặc .doc trong Java?) thông qua trình chọn tệp.

private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    JFileChooser saveFile = new JFileChooser(); 
    if saveFile.showSaveDialog(modalToComponent) == JFileChooser.APPROVE_OPTION { 
     File xyz = saveFile.getSelectedFile(); 
    } 
} 

Mã là ở đây: https://docs.google.com/file/d/0B766zz1iJ1LRN2lGRjNtM29vN2M/edit?usp=sharing

+0

bài một số mã xin vui lòng – Aboutblank

+0

chúng ta cần phải nhìn thấy một số mã –

+0

yeah, mã mà không giúp gì cả, vì nó là đầy đủ bằng các thẻ html .. – Tom

Trả lời

19

tôi đã tạo ra một giao diện người dùng mẫu hiển thị hộp thoại lưu và mở tệp. Nhấp vào nút lưu để mở hộp thoại lưu và nhấp vào nút mở để mở hộp thoại tệp.

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class FileChooserEx { 
    public static void main(String[] args) { 
     Runnable r = new Runnable() { 

      @Override 
      public void run() { 
       new FileChooserEx().createUI(); 
      } 
     }; 

     EventQueue.invokeLater(r); 
    } 

    private void createUI() { 
     JFrame frame = new JFrame(); 
     frame.setLayout(new BorderLayout()); 

     JButton saveBtn = new JButton("Save"); 
     JButton openBtn = new JButton("Open"); 

     saveBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JFileChooser saveFile = new JFileChooser(); 
       saveFile.showSaveDialog(null); 
      } 
     }); 

     openBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JFileChooser openFile = new JFileChooser(); 
       openFile.showOpenDialog(null); 
      } 
     }); 

     frame.add(new JLabel("File Chooser"), BorderLayout.NORTH); 
     frame.add(saveBtn, BorderLayout.CENTER); 
     frame.add(openBtn, BorderLayout.SOUTH); 
     frame.setTitle("File Chooser"); 
     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
+0

Làm cách nào để tôi làm việc này với kiểu cửa sổ? –

+0

@AalaaMohamed kiểu cửa sổ ??? – Amarnath

+1

Tôi có nghĩa là phong cách hộp digalog trên hệ điều hành windows như mã này làm cho một hộp digalog như một trên Mac. –

3

Tôi nghĩ rằng bạn phải đối mặt với ba vấn đề:

  1. hiểu FileChooser
  2. viết/đọc file
  3. hiểu phần mở rộng và các định dạng tập tin

quảng cáo 1. Bạn có chắc là bạn đã kết nối Trình chọn tệp với bảng điều khiển/vùng chứa đúng không? Tôi sẽ đi cho một hướng dẫn đơn giản về vấn đề này và xem nếu nó hoạt động. Đó là cách tốt nhất để học - bằng cách thực hiện các bước nhỏ nhưng đủ lớn về phía trước. Chia nhỏ vấn đề thành các phần như vậy đôi khi có thể khó khăn;)

quảng cáo. 2. Sau khi bạn lưu hoặc mở tệp, bạn nên có phương thức để viết hoặc đọc tệp. Và một lần nữa có những ví dụ khá gọn gàng về vấn đề này và thật dễ hiểu chủ đề.

quảng cáo. 3. Có sự khác biệt giữa một tệp có phần mở rộng và định dạng tệp. Bạn có thể thay đổi định dạng của bất kỳ tệp nào thành bất kỳ điều gì bạn muốn nhưng điều đó không ảnh hưởng đến nội dung của nó. Nó có thể chỉ hiển thị tệp không đọc được cho ứng dụng được liên kết với phần mở rộng đó. Các tệp TXT thật dễ dàng - bạn đọc những gì bạn viết. XLS, DOCX vv đòi hỏi nhiều công việc hơn và thường là khung công tác tốt nhất để giải quyết những vấn đề này.

0

Dưới đây là một ví dụ

private void doOpenFile() { 
    int result = myFileChooser.showOpenDialog(this); 

    if (result == JFileChooser.APPROVE_OPTION) { 
     Path path = myFileChooser.getSelectedFile().toPath(); 

     try { 
      String contentString = ""; 

      for (String s : Files.readAllLines(path, StandardCharsets.UTF_8)) { 
       contentString += s; 
      } 

      jText.setText(contentString); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

private void doSaveFile() { 
    int result = myFileChooser.showSaveDialog(this); 

    if (result == JFileChooser.APPROVE_OPTION) { 
     // We'll be making a mytmp.txt file, write in there, then move it to 
     // the selected 
     // file. This takes care of clearing that file, should there be 
     // content in it. 
     File targetFile = myFileChooser.getSelectedFile(); 

     try { 
      if (!targetFile.exists()) { 
       targetFile.createNewFile(); 
      } 

      FileWriter fw = new FileWriter(targetFile); 

      fw.write(jText.getText()); 
      fw.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Các vấn đề liên quan