1

我正在编写一个也由 HTML 组成的 Java 代码。我只想预览该 HTML 代码JFrame。Java API 中是否有可用的解决方案?

你能指导我解决这个问题吗?

4

3 回答 3

4

是的。可以显示JEditorPane(简单)HTML。有关更多详细信息,请参阅本JEditorPane教程

于 2012-05-02T11:27:30.760 回答
2

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();
            }
        });
    }
}
于 2012-05-02T11:49:32.850 回答
2

实际上,几乎每个可以在某处显示自定义用户文本的 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 应该在该键下(本地或远程)。

于 2012-05-02T12:23:43.047 回答