2009-04-17 37 views
18

Tôi đã yêu cầu thực hiện một số thay đổi đối với một applet nhỏ hiện đang sử dụng JFileChooser.
Một trong những khiếu nại chính là việc chọn tệp là một nỗi đau trong ass để sử dụng vì nó hoạt động khác với tiện ích gốc, đặc biệt là để điều hướng đến cấp cơ sở.Thay thế cho JFileChooser

Vì vậy, khi biết điều đó và tất cả các vấn đề khác mà JFileChooser gặp phải (như tệp đệm zip trên cửa sổ ...), tôi đã tự hỏi rằng một sự thay thế khả thi tồn tại trong thế giới java.

Tất nhiên, có SWT sử dụng tiện ích gốc, nhưng việc tăng kích thước applet lên 25 không thực sự là một tùy chọn. Vì vậy, là có một thực hiện tốt hơn tinh khiết java của một lựa chọn tập tin?

+0

Có một cách để mở biểu mẫu hộp thoại mở Windows chuẩn và lưu dưới dạng hộp thoại. Tôi chỉ không thể nhớ làm thế nào để làm điều đó. –

Trả lời

5

Bạn cũng có thể thử XFileDialog. Chưa thử nhiều nhưng có vẻ đáng để đánh giá.

+0

Ồ, có vẻ chính xác những gì tôi đang tìm kiếm. Cảm ơn! – gizmo

+4

Đó là khá mát mẻ, nhưng nó chỉ có Windows và sử dụng JNI. Có một sự thay thế đa nền tảng? – sworisbreathing

12

AWT FileDialog thực sự sử dụng thành phần gốc, nhưng như với hầu hết các vấn đề AWT so với Swing, nó ít linh hoạt hơn và có thể tùy chỉnh hơn số JFileChooser của Swing. Vì vậy, có một sự cân bằng: JFileChooser có thể có một giao diện người dùng clunky, nhưng nó thường tốt hơn cho hầu hết các mục đích. Tuy nhiên, nếu bạn thực sự muốn tệp của mình chọn hộp thoại trông giống như những người bản xứ thì bạn có thể đi với FileDialog.

0

Khi @htw cho biết sử dụng FileDialog nếu giao diện là mối quan tâm chính của bạn. Bằng cách sử dụng FileDialog lưu ý rằng có rất nhiều phương pháp tiện lợi mà bạn sẽ không thể sử dụng ...

Tôi đã sử dụng VFSJFileChooser vài lần. Nó không bị lỗi JFileChooser (tải chậm vì các tệp zip, chỉ các cửa sổ), nhưng giao diện không phải là "gốc".

6

Tôi biết điều này hơi muộn nhưng có thể giúp người dùng khác. Bạn có thể tùy chỉnh giao diện người dùng của ứng dụng cho giao diện người dùng của Hệ điều hành:

try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e) {e.printStackTrace();  } 
+2

Tôi cũng khá muộn ở đây nhưng đáng chú ý rằng trong khi điều này làm một công việc khá tốt, JFileChooser trên OS X bằng cách sử dụng giao diện hệ thống không phải là ở tất cả gợi nhớ của hộp thoại bản địa. – sbook

+0

Có một cách trong Java để nó mở cửa sổ mở và lưu cửa sổ hộp thoại tập tin? Tôi không thể nhớ nó đã được thực hiện như thế nào. –

2

Tôi đã viết wrapper xung quanh trình chọn tệp JavaFX 'nếu có. Nếu được đưa vào ứng dụng của bạn, bạn có thể thay

JFileChooser fileChooser = new JFileChooser(); 

với

JFileChooser fileChooser = new NativeJFileChooser(); 

Sau đó nó sẽ sử dụng bản địa (và hiện đại) file chooser của nền tảng cơ bản. Không phải mọi thứ đều hoạt động 100% như nhau, vì vậy hãy chắc chắn kiểm tra nó sau đó, nhưng hầu hết mọi thứ sẽ diễn ra suôn sẻ.

+1

Cảm ơn @Veluria! Các thử nghiệm ban đầu của tôi rất tuyệt vời - điều này sử dụng các hộp thoại hệ điều hành giống như bất kỳ ứng dụng nào có thể thực hiện và dường như hoạt động tốt (đã kiểm tra OSX & Win10) –