我找到here:我在搜索但仍有一些问题。
这是我的行动代码:
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) throws IOException {
jEditorPane1.setContentType("text/html");
int returnVal = FileChooser1.showOpenDialog(this);
if (returnVal == FileChooser1.APPROVE_OPTION) {
String image = String.format("<img src=\"%s\">", FileChooser1.getSelectedFile());
jEditorPane1.setText(image);
}
}
以下是所发生情况的屏幕截图,因为您可以看到未加载图像。 http://postimg.org/image/agc665ih1/
但是如果我保存文件(使用保存按钮)并重新打开相同的文件(使用打开按钮),图像就在那里并完全加载。
我已经尝试过.repaint()和.revalidate()方法,但是无法正常工作.. 有什么想法吗?
答案 0 :(得分:0)
这可能是在JEditorPane页面中设置路径的问题。用这个:
String image = String.format("<img src=\"%s\">", FileChooser1.getSelectedFile().getPath());
我假设你已经为JEditorPane选择了合适的editorKit。
答案 1 :(得分:0)
所以现在我可以用我的代码回答。我正在使用此类作为文件选择器:
import java.io.File;
import javax.swing.filechooser.FileFilter;
类jpgfilter扩展了FileFilter {
public boolean accept(File file) {
return file.isDirectory() || file.getAbsolutePath().endsWith(".jpg");
}
public String getDescription() {
return "JPG image (*.jpg)";
}
}
在我的主要课程中,我有这个:
FileChooser1 = new javax.swing.JFileChooser();
FileChooser1.setDialogTitle("Choose your image:");
FileChooser1.setFileFilter(new jpgfilter());
就是这样。
答案 2 :(得分:0)
所以我实际上找到了某种解决方案,但我认为代码真的太多了,我应该轻松实现。我实际插入图像并同时保存并打开EditorPane的内容为.html文件。
代码:
jEditorPane1.setContentType("text/html");
int returnVal = FileChooser1.showOpenDialog(this);
if (returnVal == FileChooser1.APPROVE_OPTION) {
String image = String.format("<img src=\"%s\">", FileChooser1
.getSelectedFile().getPath());
jEditorPane1.setText(image);
String type = jEditorPane1.getContentType();
OutputStream os = new BufferedOutputStream(new FileOutputStream(
"/Library/java_test/temp" + ".html"));
Document doc = jEditorPane1.getDocument();
int length = doc.getLength();
if (type.endsWith("/rtf")) {
// Saving RTF - use the OutputStream
try {
jEditorPane1.getEditorKit().write(os, doc, 0, length);
os.close();
} catch (BadLocationException ex) {
}
} else {
// Not RTF - use a Writer.
Writer w = new OutputStreamWriter(os);
jEditorPane1.write(w);
w.close();
}
String url = "file:///" + "/Library/java_test/temp" + ".html";
jEditorPane1.setPage(url);
}