Gluon JavaFX 中是否有任何文件导航?

Is there any file navigation in Gluon JavaFX?

假设您要使用使用 Gluon JavaFX 创建的应用程序打开图片或文件。是否有任何文件导航 window 可用于 select 那个文件或图片?

假设我们知道我们的 localRoot = /root

File localRoot = Services.get(StorageService.class)
            .flatMap(s -> s.getPublicStorage(""))
            .orElseThrow(() -> new RuntimeException("Error retrieving private storage"));

或者我需要手动将文件放在文件夹中,然后使用 table 视图扫描所有文件并将它们放在 table 视图中,这样我就可以 select他们?

您对 public 存储 API 的使用是错误的,您需要提供一个有效的名称,例如 DocumentsPictures。这些是文件系统中的有效 public 文件夹。

例如,您可以获取该文件夹中的文件列表:

File picRoot = Services.get(StorageService.class)
            .flatMap(s -> s.getPublicStorage("Pictures"))
            .orElseThrow(() -> new RuntimeException("Folder notavailable")); 

File[] files = picRoot.listFiles();    
if (files != null) {
    for (File file : files) {
        System.out.println("File: " + file);
    }
}

您如何处理这些文件,或者如何将其呈现给用户,由您决定。

但是,如果您想浏览图片库并将这些图片呈现给用户,那么 he/she 可以选择一个,您应该使用 PicturesService::loadImageFromGallery:

Retrieve an image from the device's gallery of images

这将使用本机浏览器应用程序,您可以搜索所有包含图片的常用文件夹。

它将return一个Optional<Image>(如果用户取消则为空),您还可以使用getImageFile()到return Optional<File>与文件关联与原始图像。

来自 JavaDoc:

ImageView imageView = new ImageView();
Services.get(PicturesService.class).ifPresent(service -> {
    // once selected, the image is visualized
    service.loadFromGallery().ifPresent(image -> imageView.setImage(image));
    // and the file can be shared
    service.getImageFile().ifPresent(file -> 
      Services.get(ShareService.class).ifPresent(share -> 
          share.share("image/jpeg", file)));
 });