我目前正在做一个项目,允许用户输入一个url,例如http://www.google.com用户可以编辑页面的 html 代码。到目前为止,当 JTextArea 释放按键时,我将编辑的文件保存为 html 文档。这是我使用的源代码:
String s = jTextArea1.getText();
PrintStream ps = new PrintStream(new FileOutputStream(new File("HTML.htm")));
ps.print(s);
ps.close();
this.resetPage();
最后一行代码调用这段源代码(这实际上是我尝试使用用户输入更新页面的地方:
File f = new File("HTML.htm");
URL u =f.toURI().toURL();
jEditorPane1.setPage(u);
所有正确的异常都会被捕获。它会更新页面上的文本一次。所有图像都是空白的(这是我所期望的,因为路径都是本地的),但这对文档中的其他 html 应该没有真正的影响。
当我在 Notepad++ 中打开 HTML.htm 文件时,文件正在更新,但 jEditorPane 没有使用新的 html 脚本进行更新。
此外,JEditorPane 的 Editable 值设置为 false。
当我在 Chrome 中打开该文件时,它会获取完全更新的脚本。
最佳答案
来自 JEditorPane setPage(URL) API 描述:
要强制重新加载文档,必须清除文档的流描述属性。下面的代码展示了如何做到这一点:
Document doc = jEditorPane.getDocument();
doc.putProperty(Document.StreamDescriptionProperty, null);
关于java - JEditorPane.setPage() 方法在运行时仅工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20389588/