为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2023-06-04 14:52:08
假设您要使用使用 Gluon JavaFX 创建的应用程序打开图片或文件。是否有任何文件导航窗口可用于选择该文件或图片?假设我们知道我们的localRoot = /rootFile localRoot = Services.get(StorageService.class)             .flatMap(s -> s.getPublicStorage(""))             .orElseThrow(() -> new RuntimeException("Error retrieving private storage"));或者我是否需要手动将文件放在文件夹中,然后使用表格视图扫描所有文件并将它们放在表格视图中以便我可以选择它们?
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

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


例如,您可以获得此类文件夹中的文件列表:


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);

    }

}

您如何处理这些文件,或者如何将这些文件呈现给用户,都取决于您。


但是,如果您想浏览图像库,并将这些图像呈现给用户,以便他/她可以选择一个,您应该使用PicturesService::loadImageFromGallery:


从设备的图像库中检索图像


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


它将返回一个Optional<Image>(如果用户取消则为空),您还可以使用getImageFile()返回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)));

 });


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信