JEdi​​torpane无法加载网址

时间:2015-05-21 03:33:44

标签: java url jeditorpane

我的JEditorPane有问题,无法加载URL,总是显示java.io.FileNotFoundException。总而言之,我很困惑如何解决它。

JEditorPane editorpane = new JEditorPane();
            editorpane.setEditable(false);
            String backslash="\\";
            String itemcode="a91000mf";
            int ctr=6;
            File file = new File("file:///C:/Development/project2/OfflineSales/test/index.html?item_code="+itemcode+"&jumlah="+String.valueOf(ctr)+"&lokasi=../images");
            if (file != null) {
                try {
                    //editorpane.addPropertyChangeListener(propertyName, listener)
                    editorpane.setPage(file.toURL());
                    System.out.println(file.toString());
                } catch (IOException e) {
                    System.err.println(e.toString());
                }
            } else {
                System.err.println("Couldn't find file: TextSamplerDemoHelp.html");
            }

我只是放了"file:///C:/Development/project2/OfflineSales/test/index.html?item_code="+itemcode",但它会显示同样的错误:无法打开文件,但我可以在浏览器中打开它

2 个答案:

答案 0 :(得分:0)

File需要本地文件路径,但是" file://...."是一个URI ...所以试试这个:

URI uri = new URI("file:///C:/Development/project2/OfflineSales/test/index.html?item_code="+itemcode+"&jumlah="+String.valueOf(ctr)+"&lokasi=../images");
File file = new File(uri);

答案 1 :(得分:0)

您应该删除File类的所有用法。

以“file:”开头的字符串是URL,而不是文件名。它不是File构造函数的有效参数。

您正在调用带有URL的JEditor.setPage方法,而不是文件。没有理由创建File实例:

try {
    URL url = new URL("file:///C:/Development/project2/OfflineSales/test/index.html?item_code=" + itemcode + "&jumlah=" + ctr + "&lokasi=../images");
    editorpane.setPage(url);
} catch (IOException e) {
    e.printStackTrace();
}

JEditorPane还有一个方便的方法,可以将String转换为URL,所以你甚至可以完全跳过使用URL类:

String url = "file:///C:/Development/project2/OfflineSales/test/index.html?item_code=" + itemcode + "&jumlah=" + ctr + "&lokasi=../images";
try {
    editorpane.setPage(url);
} catch (IOException e) {
    e.printStackTrace();
}

(请注意,不需要String.valueOf。只要将String与任何对象或原始值连接起来,就会隐式调用它。)