java - Gluon JavaFX 中有文件导航吗?

标签 java javafx gluon-mobile javafxports

假设您要使用用 Gluon JavaFX 制作的应用程序打开图片或文件。是否有任何文件导航窗口可用于选择该文件或图片?

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

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

或者我是否需要手动将文件放入文件夹中,然后使用表格 View 扫描所有文件并将它们放入表格 View 中以便我可以选择它们?

最佳答案

您使用的公共(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);
    }
}

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

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

Retrieve an image from the device's gallery of images

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

它将返回 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)));
 });

关于java - Gluon JavaFX 中有文件导航吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57465494/

相关文章:

java - 我尝试在Intellij中使用gluon运行新项目时出错

java - 如何在 Gluon 中生成带有图像叠加的二维码?

java - S40系列的jar文件

java - 无法使用 JFoenix lib 运行 JavaFX 应用程序

JavaFX 在线程任务完成后显示对话

java - 使用 JavaFX 和 Gluon,单击按钮时如何从登录页面更改为主菜单?

java - 如果 @AfterMethod 失败,TestNG 会跳过后续运行 @Test(inplicationCount = 3)

java - 使用maven安装本地jar

java - 如何从数组列表中获取所需的两个数字的组合?

java - 使用 JavaFX 显示 FontAwesome 图标