我正在编写一个也由 HTML 组成的 Java 代码。我只想预览该 HTML 代码JFrame
。Java API 中是否有可用的解决方案?
你能指导我解决这个问题吗?
我正在编写一个也由 HTML 组成的 Java 代码。我只想预览该 HTML 代码JFrame
。Java API 中是否有可用的解决方案?
你能指导我解决这个问题吗?
是的。可以显示JEditorPane
(简单)HTML。有关更多详细信息,请参阅本JEditorPane
教程。
JEditorPane
支持HTML 3.2元素的子集以及简单样式 (CSS)。虽然这个任务可以使用 CSS 来完成,但 HTML 3.2 的 body 元素也接受一个bgcolor
.
import java.awt.Dimension;
import javax.swing.*;
class WebPageWithBackground {
WebPageWithBackground() {
String html = "<html><body bgcolor='#ffbb99'>Hi!";
JEditorPane jep = new JEditorPane();
jep.setContentType("text/html");
jep.setText(html);
jep.setPreferredSize(new Dimension(400,50));
JOptionPane.showMessageDialog(null, jep);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new WebPageWithBackground();
}
});
}
}
实际上,几乎每个可以在某处显示自定义用户文本的 Swing 组件都允许使用 HTML 而不是文本。例如 JButton 文本、JTabbedPane 选项卡标题、JTable 单元格/标题、JLabel 文本、JList/JTree/JComboBox 单元格渲染器、组件工具提示等。
要在其中任何一个中使用 HTML - 只需<html>
在文本的开头添加标签 - 这足以让视图解析器知道您在其中有一些 HTML。
此外,Java 支持的 HTML 也相当陈旧,大多数新功能都无法使用,因为您可以在现代浏览器或可视化编辑器中看到它们。但它仍然足以在您需要的地方创建一些高级组件内容。
还有一件事——如果你想在 HTML 中显示一些本地图像,你必须更改组件的基本位置,以便它可以正确加载它们:
component.putClientProperty (
BasicHTML.documentBaseKey,
new File ( "/local/path/" ).toURI ().toURL ()
);
一些正确的 URL 应该在该键下(本地或远程)。