java - 创建具有相对路径的 URL 对象

标签 java swing jeditorpane

我正在创建一个带有 JEditorPane 的 Swing 应用程序,它应该显示一个名为 url1.html 的 HTML 文件,该文件本地存储在 page 文件夹中项目的根文件夹。

我已经实例化了以下字符串对象

final String pagePath = "./page/";

为了在 JEditorPane Pane 中显示,我创建了以下 URL 对象:

URL url1 = new URL("file:///"+pagePath+"url1.html");

但是当使用创建的 URL 对象作为参数调用 setPage() 方法时:

pagePane.setPage(url1);

它抛出一个 java.io.FileNotFoundException 错误。

url1 的构建方式似乎有问题。有人知道这个问题的解决方案吗?

最佳答案

解决办法是找到url1.html的绝对路径,在上面做一个java.io.File的对象,然后用toURI() .toURL() 组合:

URL url1 = (new java.io.File(absolutePathToHTMLFile)).toURI().toURL();

假设当前目录是page的根目录,你可以传递一个相对路径给File:

URL url1 = (new java.io.File("page/url1.html")).toURI().toURL();

URL url1 = (new java.io.File(new java.io.File("page"), "url1.html")).toURI().toURL();

但这取决于您从何处运行应用程序。如果根目录是应用程序的唯一可配置选项,或者如果它有一个配置文件,我会让它把根目录作为命令行参数。

另一种解决方案是将 html 文件作为资源放入应用程序的 jar 文件中。

关于java - 创建具有相对路径的 URL 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247736/

相关文章:

java - 反向排序HashMap?

java - 确定 JTextField 是否包含整数

java - 如何将信息放入 Tapestry5 的输出流中?

java - 按钮事件仍然适用于禁用按钮

Java JEditorPane 用超链接替换选中的文本

java - Java 的 JEditorPane 是否有一个好的替代品?

java - 如何在从 Java 代码生成的 Swagger 规范中创建可重用的枚举?

java - 如何从 JTable 中删除所有列?

java - 为什么在没有显式调用 repaint() 的情况下连续异步调用 paintComponent()?

java - JEdi​​torPane:HTML 布局损坏