【发布时间】:2012-05-11 20:44:46
【问题描述】:
我正在编写一个也由 HTML 组成的 Java 代码。我只想在JFrame 中预览该 HTML 代码。 Java API 中是否有可用的解决方案?
你能指导我解决这个问题吗?
【问题讨论】:
标签: java html swing jframe jtextcomponent
我正在编写一个也由 HTML 组成的 Java 代码。我只想在JFrame 中预览该 HTML 代码。 Java API 中是否有可用的解决方案?
你能指导我解决这个问题吗?
【问题讨论】:
标签: java html swing jframe jtextcomponent
是的。 JEditorPane 可以显示(简单)HTML。有关详细信息,请参阅此JEditorPane tutorial。
【讨论】:
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(本地或远程)。
【讨论】: