Можно ли реализовать команду в CodenameOne, которая будет отображать PDF после нажатия кнопки без использования URL - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать программу, использующую плагин CodenameOne, который будет отображать различные PDF-файлы при нажатии кнопок, но я не могу найти способ сделать это без использования конкретного URL-адреса для каждого PDF-файла.Есть ли какой-нибудь возможный способ сделать это, поместив файлы PDF в пакет и вызывая их при необходимости?Я бы предположил, что мне нужно использовать ActionListener, но я действительно не знаю, что делать.Это то, что я пробовал до сих пор.

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

1 Ответ

0 голосов
/ 07 июня 2018

Desktop или другие API, связанные с AWT, недоступны.Даже java.io.File не имеет смысла для Codename One из-за ограничений мобильных ОС для файловых систем, которые java.io не предназначены для обработки, см. this для подробного объяснения формы.

У нас есть образец, который делает именно это, взятое из здесь :

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