Mình đang làm 1 dự án nhỏ về notepad và vướng ở tùy chọn save as :((. Mong mn giúp đỡ vì mình không hiểu nguyên lý hoạt động của cái phương thức này nó hoạt động kiểu gì, ai rảnh cho mình xin luôn 1 đoạn ví dụ về cách mà nó lưu lại nội dung trong khung TextArea
thành 1 file mới ạ?
Mình cảm ơn.
Về phương thức showSaveDialog trong java
Thường thì sẽ có 2 tùy chọn lưu như sau:
- Save.
- Save As (New).
2 mục gần giống nhau thôi. Chỉ khác là cái thứ 2 sẽ luôn tạo mới một tập tin. Bởi vậy nếu nội dung chưa lưu lần nào thì 2 mục hoàn toàn giống nhau.
Chỉ xét đến khi tập tin đã được lưu (hoặc được mở từ tập tin có sẵn).
Khi chưa lưu:
- Chọn Save: do chưa lưu nên hiện
showSaveDialog()
. - Chọn Save As: hiện
showSaveDialog()
.
Khi đã lưu/mở trước đó:
- Chọn Save: do đã lưu trước đó, lưu luôn theo đường dẫn của tập tin. Không hiện
showSaveDialog()
. - Chọn Save As: hiện
showSaveDialog()
.
Nói chung lại thì:
-
Save As luôn hiện
showSaveDialog()
mỗi khi chọn. - Save thì xét có lưu chưa để mà hiện lên.
dạ mình cảm ơn ạ, vấn đề ở chỗ mình mới chỉ làm được cho nó lưu lại khi đã mở 1 tệp, còn tạo 1 tệp mới thì mình không rõ lắm, giúp mình với
Tức là bạn chưa lấy được đường dẫn mà phương thức showSaveDialog()
đã chọn?
Phương thức này sẽ trả về số nguyên thể hiện cho:
-
JFileChooser.CANCEL_OPTION
nếu người dùng hủy thao tác lưu. Nhấn nút Cancel. -
JFileChooser.APPROVE_OPTION
nếu người dùng chọn và xác nhận. Nhấn nút Save File. -
JFileChooser.ERROR_OPTION
nếu có lỗi xảy ra.
Vì thế bạn so sánh giá trị trả về để thực hiện lưu.
Lấy đường dẫn lưu bằng phương thức getSelectedFile()
Mẫu:
JFileChooser fc = ...;
fc.setMultiSelectionEnabled(false); // Chỉ chọn 1 tập tin
int ret = fc.showSaveDialog();
if(ret == JFileChooser.APPROVE_BUTTON){ // Chọn
File toSave = fc.getSelectedFile();
// Lưu theo tập tin nhận được.
}else if (ret == JFileChooser.CANCEL_BUTTON){ // Hủy
// Làm gì đó.
}else if (ret == JFileChooser.CANCEL_BUTTON){ // Lỗi
// Làm gì đó.
}
Bình thương khi bạn Save thì sẽ check xem file tồn tại hay chưa, nếu có thì lưu đè vào file, còn không thì tạo file mới.
Còn với Save As thì bạn chỉ cần bỏ cái check đó đi là đc mà, nghĩa là luôn luôn showSaveDialog();.
Mình hiểu rồi ^^, không biết có phải mod của diễn đàn ko nhưng cảm ơn bạn nhiều ạ
Cảm ơn bạn ^^ mình hiểu rồi