Hướng dẫn sử dụng hộp thoại Open/Save với thư viện Java Swing

Chào các bạn, hôm nay trên facebook của mình có bạn hỏi cách để tạo hộp thoại open/save với thư viện Java Swing. Vì vậy, mình quyết định viết bài viết ngắn này để giới thiệu các bạn cách sử dụng hai loại hộp thoại cơ bản này.

Hộp thoại (dialog) open/save là gì?

Về cơ bản đó là hai hộp thoại để giúp bạn lấy đường dẫn (path) của một file để tiến hành xử lý. Ví dụ, bạn tạo một chương trình để mở file nhạc, thay vì bạn bắt người dùng phải tự điền đầy đủ đường dẫn của file vào hộp thoại mở file đơn điệu của mình, bạn có thể dùng hộp thoại open này để giúp người dùng mở file một cách trực quan như trên cửa sổ Explorer của Windows.

open/save box java swing
Open/save box java swing

Hộp thoại save cũng thương tự với open, với giao diện “giống hệ” hộp thoại open, người dùng có thể chọn thư mục, đặt tên cho file muốn tạo và bạn chỉ việc xử lý các công đoạn tiếp theo.

Hai hộp thoại này khá phổ biến với các hệ điều hành hỗ trợ giao diện GUI mà Windows là ví dụ rõ ràng nhất.

Swing hỗ trợ hộp thoại open/save như thế nào?

Rất đơn giản,thư viện Swing hỗ trợ hai hộp thoại trên thông qua lớp “JFileChooser”, do đó, bạn chỉ việc import lớp này vào và sử dụng.

import javax.swing.JFileChooser;

Về cơ bản, cú pháp sử dụng hộp thoại Open và Save là như nhau.

Bước 1: tạo instance cho lớp JFileChooser

JFileChooser c = new JFileChooser();

Bước 2: gọi hộp thoại open/save

Nếu mục đích của bạn là để mở một file, bạn cần gọi hộp thoại Open:

int rVal = c.showOpenDialog(null);

Nếu mục đích của bạn là để lưu một file, bạn cần gọi hộp thoại Save:

int rVal = c.showSaveDialog(null);

Cả hai hàm trên đều trả về một giá trị int. Giá trị đó có nghĩa là:

  • Nếu rVal == JFileChooser.APPROVE_OPTION , người dùng đã chọn thành công một file.
  • NẾu rVal == JFileChooser.CANCEL_OPTION , người dùng không chọn file nào vào nhất thoát.

Ngoài ra, hai hàm showOpenDialog và showSaveDialog còn nhận vào tham số là mộ Component, bạn có thể truyền vào “null” hoặc NÊN truyền vào Component là cửa sổ hiện hành.

Bước 3: xử lý dữ liệu sau khi người dùng đã chọn file

Cả hai hộp thoại Open/Save bước này đều giống nhau. Sau khi bạn đã gọi hộp thoại, bạn nên dùng câu lệnh if để kiểm tra xem người dùng đã chọn file thành công chưa:

if (rVal == JFileChooser.APPROVE_OPTION) {
     String filename = c.getSelectedFile().getName();
     String dir = c.getCurrentDirectory().toString();
 }

Như những code trên, để lấy thông tin về “tên file”, bạn dùng hàm

c.getSelectedFile().getName()

Để lấy đường dẫn thư mục của file, ta cần lấy đường dẫn thư mục hiện hành mà hộp thoại Open/Save vừa nảy đã mở:

c.getCurrentDirectory().toString();

Để nối lại tạo thành path hoàn chỉnh:

String filePath = dir+"\\"+filename;

Các bước xử lý tiếp theo do bạn tự quyết định tùy thuộc vào công năng của chương trình.

Chúc bạn thành công.

Công Hậu

6 thoughts on “Hướng dẫn sử dụng hộp thoại Open/Save với thư viện Java Swing”

    1. Bạn nên kế thừ lại lớp JFileChooser và overrider hàm call back approveSelection(), đó là hàm call back được gọi khi người dùng nhấn open/save trên hộp thoại nhé.

      Like

    2. Còn một cách nữa nếu không muốn kế thừa lại là implement ActionListener sau đó từ object của lớp JFileChooser gọi hàm addActionListener để truyền vào đối tượng ActionListener. Cách này có vẻ phức tạp nhơn, nhưng được cái không phải kế thừa lại và code rõ ràng, trong sáng, chia nhỏ ra hơn và đáp ứng được high cohesion.

      Đây là cách tạo listener để xử lý sự kiện (bắt sự kiện) chứ không phải gọi là “tạo sự kiện”.

      Like

  1. A cho e hỏi là e truyền file thì e muốn lấy tên file gán cho cái FileName trong hộp thoại save để lưu chứ không cần nhập thì làm sao ạ

    Like

Gửi bình luận