0

我在这里找到了:我在寻找什么,但我仍然有一些问题。

这是我的操作代码:

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() 方法,但是没有用。知道吗?

4

3 回答 3

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);

    }
于 2013-08-13T15:22:43.023 回答
0

这可能是在 JEditorPane 页面中设置路径的问题。用这个:

String image = String.format("<img src=\"%s\">", FileChooser1.getSelectedFile().getPath());

我假设您已经为 JEditorPane 选择了合适的 editorKit。

于 2013-08-12T10:36:57.070 回答
0

所以现在我可以用我的代码来回答了。我将此类用于文件选择器:

import java.io.File;

导入 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());

就是这样。

于 2013-08-13T08:32:23.150 回答