2013-03-15 33 views
6

Tôi đang tạo ứng dụng xoay java và tôi cần đặt chương trình của tôi làm chương trình mặc định cho phần mở rộng tệp .mcsd (loại MIME text/mcsd). Điều này phải hoạt động trên các cửa sổ và sẽ rất tuyệt nếu nó hoạt động trên OS X/Linux. Tôi hơi mới với java (3 hoặc 4 tháng) vì vậy xin vui lòng không bắn phá tôi với tất cả các loại nói chuyện chuyên gia.Loại tệp liên kết với ứng dụng Java Swing

Tôi đã xem associating a custom file extension with java app in windows, nhưng tôi không muốn sử dụng Java Web Start. Nếu có thể, tôi cũng muốn biết cách đặt biểu tượng của loại tệp đó. Tôi đã tìm thấy exe4j như một cách để tạo ra các .exe và có kế hoạch sử dụng nó, nhưng nếu không phải là công cụ tốt nhất để convertinf để một exe hoặc ai đó biết một cái gì đó tốt hơn cảm thấy tự do để cho tôi biết. Một điều nữa: tôi cần có thể lấy dữ liệu từ tập tin này sau khi chương trình đã mở.

Vì vậy, câu hỏi của tôi là: làm cách nào để thực hiện việc này?

+0

Vì tôi muốn có một trình cài đặt gốc chỉ cài đặt chương trình mà không cần mở trang web hoặc bất kỳ thứ gì. Nếu đó không phải là cách chúng tôi bắt đầu công việc, thì tôi rất vui khi sử dụng nó. – KFox

+0

Tôi có làm điều đó bằng cách sử dụng 'openConnection()' trên một đối tượng URL không? và nơi tôi có thể tìm thấy một hướng dẫn trên JNLP và JWS khác docs.oracle.com, tôi tìm thấy những hướng dẫn một chút khó đọc (nó không khó hiểu, nhìn chỉ cần đầu của tôi trong). – KFox

+0

Và điều gì về việc nhận dữ liệu/đường dẫn của tệp đã được mở? – KFox

Trả lời

8

Triển khai ứng dụng. với Java Web Start:

JWS cung cấp nhiều tính năng hấp dẫn, bao gồm nhưng không giới hạn, màn hình giật gân, tích hợp máy tính để bàn, hiệp hội tập tin, cập nhật tự động ..

Xem file services demo. cho một ví dụ về một JNLP khai báo sự quan tâm đến loại tệp .zzz.

Đây là cách hiệp hội được khai báo trong JNLP:

<association 
    extensions="zzz" 
    mime-type="text/sleepytime" /> 

JWS được cung cấp bởi Oracle và hoạt động trên Windows, * nix & OS X.

..nhưng tôi muốn không sử dụng Java Web Start. Bởi vì tôi muốn có một trình cài đặt gốc mà chỉ cần cài đặt chương trình, mà không cần mở một trang web hoặc bất cứ điều gì. Nếu đó không phải là cách khởi động (web start), thì tôi rất vui khi sử dụng nó.

JWS hoạt động trên web hoặc mạng. Nhưng nếu bạn có thể gọi việc mở một URL (tới JNLP) từ màn hình nền, không cần phải mở bất kỳ trình duyệt nào.

Tôi có làm điều đó bằng cách sử dụng openConnection() trên đối tượng URL không?

Tôi sẽ sử dụng API Desktop hoặc BasicService.

Desktop.getDesktop().browse(uri); 

boolean result = basicService.showDocument(url); 

Như đã nêu trong BasicService demo.

Trong Java 6+, một cuộc gọi để hiển thị tệp khởi động web khác (ví dụ: BasicService.showDocument(another.jnlp)) sẽ được chuyển trực tiếp tới JavaWS, không có cửa sổ trình duyệt nào xuất hiện.

Tôi hy vọng điều này luôn đúng với API Desktop, vì khách hàng JWS là người tiêu dùng mặc định cho loại tệp đó.