【问题标题】:Show the HTML code preview in JFrame?在 JFrame 中显示 HTML 代码预览?
【发布时间】:2012-05-11 20:44:46
【问题描述】:

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

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

【问题讨论】:

    标签: java html swing jframe jtextcomponent


    【解决方案1】:

    是的。 JEditorPane 可以显示(简单)HTML。有关详细信息,请参阅此JEditorPane tutorial

    【讨论】:

    • JEditorPane 是否可以显示 HTML body 的背景色??
    • 是的,但我认为这取决于您的操作方式。如果您使用真正简单的标签,例如“”,它应该可以工作(它对我有用;)。但是您可能会遇到一些 CSS 问题,或者代码变得复杂。只是测试它。在真正的浏览器中尝试您的 HTML 文件,看看它是否真的有效。
    • “在真正的浏览器中尝试你的 HTML 文件,看看它是否真的有效。” 鉴于浏览器会竭尽全力找出(通常是无效的,通常格式错误)HTML 实际上应该意味着,我会将该语句中的“浏览器”替换为“validation service”。
    【解决方案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();
                }
            });
        }
    }
    

    【讨论】:

      【解决方案3】:

      实际上,几乎每个可以在某处显示自定义用户文本的 Swing 组件都允许使用 HTML 而不是文本。例如JButton 文本、JTabbedPane 选项卡标题、JTable 单元格/标题、JLabel 文本、JList/JTree/JComboBox 单元格渲染器、组件工具提示等。

      要在其中任何一个中使用 HTML - 只需在文本的开头添加 &lt;html&gt; 标记 - 这足以让视图解析器知道您在其中有一些 HTML。

      Java 支持的 HTML 也很老旧,大多数新功能都无法使用,因为您可以在现代浏览器或可视化编辑器中看到它们。但它仍然足以在您需要的地方创建一些高级组件内容。

      还有一件事——如果你想在 HTML 中显示一些本地图像,你必须更改组件的基本位置,以便它可以正确加载它们:

      component.putClientProperty (
          BasicHTML.documentBaseKey, 
          new File ( "/local/path/" ).toURI ().toURL () 
      );
      

      该键下应有一些正确的 URL(本地或远程)。

      【讨论】:

      • 我们可以在 jframes 中也显示
      • 你不能,至少在 Swing 中不能。 Swing 仅支持 HTML 3.2,这在当今的标准中已经过时了,video 标签是 HTML 5 自带的。
      • ow... 如果是这样的话。我们应该继续使用 JavaFX,对吗?
      • 取决于您的需要。与 FX 相比,Swing 仍然具有更好的性能,许多具有各种组件和功能的 3rd 方库仍然受到 Oracle 的支持。 Swing 也包含在标准 JDK 包中,FX 不再包含。另一方面,FX 有一些在 Swing 中难以实现的强大功能(尽管并非不可能),例如正确的 Web 浏览器实现、视频播放器、一些开箱即用的高级图形内容等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多