0

我正在尝试在 jeditorpane 中显示一个 html 文件。

该文件保存在项目文件夹中,由程序生成。这是一张名为 FredReceipt.html 的收据

我了解如何将 jeditorpane 用于 url,但是我无法理解如何通过教程等加载文件......我一直在从网上阅读。我想使用相对 url 加载文件。这就是我目前所拥有的,它不起作用(显然),它正在捕获 IOException。

public void showReceipt() {
    receiptPanel = new JPanel();
    receiptPanel.setVisible(true);
    receiptPanel.setBackground(new Color(250,251,253)); 
    String url = "FredReceipt.html";
    try {
      JEditorPane htmlPane = new JEditorPane("FredReceipt.html");
      htmlPane.setEditable(false);
      receiptPanel.add(new JScrollPane(htmlPane));
    } catch(IOException ioe) {
      System.err.println("Error displaying " + url);
    }

}

我也尝试过使用这样的“setPage()”方法:

public void showReceipt() {
    receiptPanel = new JPanel();
    receiptPanel.setVisible(true);
    receiptPanel.setBackground(new Color(250,251,253)); 
    try {
      JEditorPane htmlPane = new JEditorPane();
      htmlPane.setPage(new URL("FredReceipt.html"));
      htmlPane.setEditable(false);
      receiptPanel.add(new JScrollPane(htmlPane));
    } catch(IOException ioe) {
      System.err.println("Error displaying file");
    }

}

FredReceipt.html 显然不是 url,但我已经读过文件可以像 url 一样读取,我只是找不到正确的方法。

我希望我的问题不是太愚蠢,非常感谢!

4

2 回答 2

4

该文件不应写入安装应用程序的同一目录中。由于此数据是由应用程序生成的,因此它似乎是暂时的。在这种情况下,最好将java.io.tmpdir, 作为一个临时文件,并在退出时请求删除。像这样的东西:

File tempDir = new File(System.getProperty("java.io.tempdir"));
File receiptFile = File.createTempFile("FredReceipt", "html", tempDir);
receiptFile.deleteOnExit();
// fill the file with mark-up
// ...
// end filling
editorPane.setPage(receiptFile.toURI().toURL());
于 2012-04-30T00:42:36.153 回答
2

JEdi​​torPane 是一种花哨的文本区域,可以显示源自不同文件格式的文本。

以下链接可能对您有所帮助。
JEdi​​torPane 中的 HTML

于 2012-04-30T04:23:25.200 回答