2010-05-26 37 views
7

Tôi được đặt để tạo trình khám phá tệp bằng Java. Mục đích là để mô phỏng hành vi của trình thám hiểm mặc định càng chặt chẽ càng tốt, bất cứ điều gì có thể là hệ điều hành cơ bản.Trình khám phá tệp bằng Java - cách thực hiện?

Tôi đã thực hiện KHÔNG lập trình GUI trong Java.

Tôi đã nhìn-up Swing, SWT và JFace, và tôi bắt đầu dự án của tôi với hướng dẫn này: http://www.ibm.com/developerworks/opensource/library/os-ecgui1/

tôi muốn biết ý kiến ​​của bạn về phương pháp tốt nhất để giải quyết vấn đề này. Nếu bạn có thể bình luận về sự phức tạp của mã hóa, tính di động và tính độc lập của hệ điều hành, và hiệu quả, nó sẽ là tuyệt vời.

Có điều gì khác mà tôi nên biết không? Có một số cách khác tồn tại?

Cảm ơn rất nhiều!


Cảm ơn câu trả lời và trả lời.

Có vẻ như tôi sẽ chọn Swing để triển khai trình khám phá tệp. Điều gì cho tôi creep là suy nghĩ rằng sẽ không có gì để bắt chước chế độ xem thám hiểm mặc định ... Bạn có thể vui lòng cung cấp một số gợi ý về nó không? Tôi có nhận được danh sách các tệp, nhận biểu tượng và sau đó sắp xếp chúng theo kiểu lưới trên màn hình để hiển thị chế độ xem trình khám phá mặc định không?

+0

"Trình thám hiểm mặc định" ở đây có phải là mặc định của trình quản lý nền tảng/cửa sổ không? Bởi vì điều đó có nghĩa là bạn cần phải phát hiện những điều này và sử dụng triển khai khác nhau cho các nền tảng khác nhau. Tôi sẽ bắt đầu bằng cách googling nếu ai đó đã làm một cái gì đó như thế này. – fish

+0

có, ý tôi là chính xác theo trình khám phá mặc định. Tôi đã googled; nó rất dễ dàng để tìm mã cấu trúc cây thư mục, nhưng cửa sổ thám hiểm với các biểu tượng được đặt ra trong thời trang lưới, không có may mắn cho đến nay. : - | – Chaitanya

+0

Được đăng chéo lên http://groups.google.com/group/comp.lang.java.gui/browse_frm/thread/88c34511a58a4cbe – trashgod

Trả lời

6

Bạn nên sử dụng Swing. Bạn cần các phiên bản SWT và JFace khác nhau cho các hệ điều hành khác nhau.

Cách tiếp cận tốt nhất là bắt đầu đơn giản và thêm vào những gì bạn có khi tìm hiểu thêm.

Để giúp bạn bắt đầu, bạn cần một JFrame với hai trẻ em JPanel.

Bạn sẽ cần thêm JMenuBar vào JFrame. Các mục JMenu được thêm vào JMenuBar. Các mục JMenuItem được thêm vào JMenu.

Oracle Swing Overview sẽ giúp bạn thêm nhiều thành phần Swing vào dự án của bạn.

+3

+1 cho tính di động đa nền tảng và tinh chỉnh từng bước. – trashgod

+0

Xin lỗi tôi nếu tôi sai, nhưng tôi chỉ có thể thấy JFileChooser trong Swing, và nó có thể hiển thị hộp thoại mở/lưu; nhưng tôi muốn một cái gì đó tương tự như một nhà thám hiểm tập tin. Cho đến nay, tôi chưa thể thấy cách làm điều đó bằng cách sử dụng JFileChooser. – Chaitanya

+1

@ user299988: Bạn sẽ phải xây dựng một trình thám hiểm tệp từ nhiều thành phần Swing. Tôi đã cho bạn một danh sách các thành phần để bắt đầu với câu trả lời của tôi. –

4

Tôi bắt đầu với How to Use File Choosers, nhưng ví dụ trong org.netbeans.swing.outline.Outline, được thảo luận here, rất hấp dẫn.

Phụ lục: @Gilbert Le Blanc nêu lên một điểm tuyệt vời về sự dễ dàng & tính di động của Swing. Ngược lại, SWT đòi hỏi nhiều nỗ lực hơn để triển khai, nhưng một số người dùng thích độ trung thực cao hơn của org.eclipse.swt.widgets.FileDialog, như được hiển thị here.

Phụ lục: Tôi nhận thấy rằng FileDialog hiển thị cửa sổ trông có vẻ bản địa hơn, như đã thấy here. Bạn có thể thử nó trên (các) nền tảng đích của bạn.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

/** @see https://stackoverflow.com/questions/2914733 */ 
public class FileDialogTest { 

    public static void main(String[] args) { 
     final JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLayout(new GridLayout(0, 1)); 
     frame.add(new JButton(new AbstractAction("Load") { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       FileDialog fd = new FileDialog(frame, "Test", FileDialog.LOAD); 
       fd.setVisible(true); 
       System.out.println(fd.getFile()); 
      } 
     })); 
     frame.add(new JButton(new AbstractAction("Save") { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       FileDialog fd = new FileDialog(frame, "Test", FileDialog.SAVE); 
       fd.setVisible(true); 
       System.out.println(fd.getFile()); 
      } 
     })); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

Xin lỗi về liên kết không chính xác. – trashgod

+0

Tôi đã thêm một ví dụ bằng cách sử dụng 'java.awt.FileDialog', có thể phù hợp với nhu cầu của bạn tốt hơn. – trashgod

Các vấn đề liên quan