7

この方法で作成されたJEditorPaneがあります。

JEditorPane pane = new JEditorPane("text/html", "<font face='Arial'>" + my_text_to_show + "<img src='/root/img.gif'/>" + "</font>");

このペインをJFrameに配置しました。

テキストは正しく表示されますが、画像が表示されません。画像があるはずであることを示す正方形しかありません(つまり、画像が見つからない場合にブラウザによって表示される「壊れた画像」)

4

5 に答える 5

9

タイプを提供し、リソースを取得する必要があります。それで全部です。私のテスト済みの例ですが、フォーマットについてはわかりません。それが役に立てば幸い:

import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;

public class Test extends JFrame {

    public static void main(String[] args) throws Exception {
        Test.createAndShowGUI();
    }

    private static void createAndShowGUI() throws IOException {

        JFrame.setDefaultLookAndFeelDecorated(true); 

        JFrame frame = new JFrame("HelloWorldSwing");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String imgsrc = 
            Test.class.getClassLoader().getSystemResource("a.jpg").toString();
        frame.getContentPane().add(new JEditorPane("text/html",
            "<html><img src='"+imgsrc+"' width=200height=200></img>"));
        frame.pack();

        frame.setVisible(true);
    }
}
于 2009-02-21T15:28:33.560 に答える
4

JEdi​​torPaneはHTMLDocument.getBaseを使用して相対URLも検索しているため、ディレクトリのコンテンツを表示する場合は、ベースディレクトリに相対的なURLを解決するように、HTMLドキュメントにベースを設定してください。

その画像が実際にどこにあるかに応じて、HTMLEditorKit + HTMLFactory + ImageViewを拡張し、ImageViewのカスタム実装を提供することをお勧めします。これは、属性URLを画像URLにマッピングする役割も果たします。

于 2009-02-21T21:42:58.777 に答える
3

上記のどれも私にとってはうまくいきませんでしたが 'imgsrc = new File("passport.jpg").toURL().toExternalForm();' 、html の各画像の前に「file:」を付けて、次のようにします。

<img src="file:passport.jpg" />

そして、それは私にとってはうまくいきます。

于 2012-04-10T06:58:00.640 に答える
0

ネットビーンズで作業していたときにこれを使用しましたが、うまくいきました。プログラムを netbeans の外で実行する必要がある場合は、少し修正すると思います。

String imgsrc="";
try {
    imgsrc = new File("passport.jpg").toURL().toExternalForm();
} catch (MalformedURLException ex) {
   Logger.getLogger(EntityManager.class.getName()).log(Level.SEVERE, null, ex);
}
//System.out.println(imgsrc); use this to check
 html = "<img src='" + imgsrc + "' alt='' name='passport' width='74' height='85' /><br />";
//use the html ...   

jar から実行する場合、イメージ ファイルは同じディレクトリ レベルにある必要があります。実際、イメージ ファイルは実行エントリと同じディレクトリにある必要があります。

于 2011-08-15T10:50:28.920 に答える