首页 > 解决方案 > 是否可以在 CodenameOne 中实现一个命令,一旦按下按钮而不使用 URL,它将显示 PDF

问题描述

我正在尝试使用 CodenameOne 插件制作一个程序,该插件会在按下按钮时显示各种 PDF,但是如果不为每个 PDF 使用特定的 URL,我找不到这样做的方法。是否有任何可能的方法通过将 PDF 文件放入包中并在需要时调用它们来完成此操作?我会假设我需要使用 ActionListener 但我真的不知道该怎么做。这是我到目前为止所尝试的。

        b1L1.addActionListener((e)->File file = new File("/path/to/file.pdf");
        Desktop.getDesktop().open(file));

标签: javacodenameone

解决方案


桌面或其他 AWT 相关 API 不可用。由于移动操作系统对文件系统的限制不是为处理而设计的,因此即使java.io.File在 Codename One 上也没有任何意义,请参阅以获取详细说明。java.io

我们有一个从这里获取的样本:

Form hi = new Form("PDF Viewer", BoxLayout.y());
Button devGuide = new Button("Show PDF");
devGuide.addActionListener(e -> {
    FileSystemStorage fs = FileSystemStorage.getInstance();
    String fileName = fs.getAppHomePath() + "pdf-sample.pdf";
    if(!fs.exists(fileName)) {
        Util.downloadUrlToFile("http://www.polyu.edu.hk/iaee/files/pdf-sample.pdf", fileName, true);
    }
    Display.getInstance().execute(fileName);
});
hi.add(devGuide);

hi.show();

推荐阅读