所以我的HTML就是这个。
<!DOCTYPE HTML>
<html>
<body >
<h1 style="background-color:lightblue">This is a h1</h1>
<img src="haha.jpg" alt="W3Schools.com" width="104" height="142" >
</p>
</body>
</html>
这是我加载HTML的方式:
JEditorPane je = new JEditorPane();
je.setEditable(false);
je.setContentType("text/html");
FileReader fr = new FileReader("testPage.html");
BufferedReader br = new BufferedReader(fr);
String text = "";
String inputLine = br.readLine();
while(inputLine!=null){
text += inputLine+"\n";
inputLine=br.readLine();
}
je.setText(text);
SwingNode sn = new SwingNode();
sn.setContent(je);
h1部分工作正常,但图像部分没有显示,显示在.html文件中。所以我想知道是否有任何方法可以在HTML中显示图像?如果JEditorPane
无法执行,其他组件会显示html WITH 图片?
帮助感谢。
答案 0 :(得分:1)
我将图像复制到执行程序的同一工作目录中,并使用以下HTML ...
<!DOCTYPE HTML>
<html>
<body >
<h1 style="background-color:lightblue">This is a h1</h1>
<img src="haha.jpg" alt="W3Schools.com" width="104" height="142" >
</p>
</body>
</html>
代码......
import java.awt.EventQueue;
import java.io.File;
import java.net.URL;
import java.util.Dictionary;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestEditor {
public static void main(String[] args) {
new TestEditor();
}
public TestEditor() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JEditorPane editor = new JEditorPane();
try {
editor.setPage(new File("testPage.html").toURI().toURL());
} catch (Exception exp) {
exp.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(editor));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
能够让它毫无问题地运行......
将图像放在程序执行上下文的相对位置(&#34;。&#34;)
答案 1 :(得分:0)
由于您使用的是SwingNode
,因此您的应用程序实际上使用了JavaFX。
JavaFX有一个Web浏览器组件,您可以在这里阅读更多相关信息:
Overview of the JavaFX WebView
Component
以下是如何使用它的简短示例:
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load(url);
url
可以是"http://example.com"
之类的地址,也可以指向如下文件或资源:
Paths.get("testPage.html").toURI().toURL();
如果您将HTML内容设为String
,则可以按以下方式加载:
String htmlContent = "<html>....</html>";
browser.getEngine().loadContent(htmlContent);
如果要在htmlContent
中插入图像,可以这样做:
URL url = Main.class.getResource("haha.jpg"); // haha.jpg is next to Main class
String text = "<html><img src=\"" + url + "\" width=\"104\" height=\"142\" > </html>";
或者,如果要在计算机上插入指向固定文件的图像,请像这样创建url
:
URL url = new File("C:/images/haha.jpg").toURI().toURL();
或者:
URL url = Paths.get("C:/images/haha.jpg").toUri().toURL();