【问题标题】:Why isn't my CSS working right in Java?为什么我的 CSS 在 Java 中不能正常工作?
【发布时间】:2014-09-28 14:33:47
【问题描述】:

想知道您是否可以帮助我?我正在尝试通过实现CSS 在Java 中创建一些编码来执行JEditorPane 中的html 代码。

我让它实现一些 CSS 编码作为一项规则,但它似乎忽略了编码中的"float:" 位。在 JSFiddle (link) 上,我让它完美运行,但在 Java/NB 上,它创建了容器,左边的 div 很小,而应该是右边的 div,但它把它放在左边 div 的下方,而不是在它的右边。我在想的是 Java 和 HTMLEditorKit 以及 StyleSheet 不支持我想做的事情。有人可以澄清一下吗?

编辑:

似乎只支持HTML 3.2。有没有可能的解决方法?

import java.awt.Dimension; 
import javax.swing.*;
import javax.swing.text.Document;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;

@SuppressWarnings("serial")
public class jBulletins extends JPanel {

    javax.swing.JEditorPane bulletinBoard = new javax.swing.JEditorPane();

    public jBulletins() {

        Dimension d = new Dimension();
        d.setSize(800, 600);

        bulletinBoard.setPreferredSize(d);
        bulletinBoard.setContentType("text/html"); // NOI18N

        add(new JScrollPane(bulletinBoard));

        loadBulletins();
    }

    private void loadBulletins() {

        //<editor-fold defaultstate="collapsed" desc="HTML/CSS Script">
        String eBullStyles = "#divMsgs{ "
                + "height: 99px; "
                + "margin: auto; "
                + "background-color: #3399FF; "
                + "} "
                + "#divLeft{ "
                + "float: left; "
                + "width: 110px; "
                + "height: 85px; "
                + "border: 2px #6666ff outset; "
                + "padding: 5px; "
                + "background-color: #189cd8; "
                + "color: #ffffff; "
                + "font-size: 11px; "
                + "font-weight: normal; "
                + "font-family: Tahoma, Geneva, sans-serif; "
                + "font-style: normal; "
                + "text-decoration: inherit; "
                + "} "
                + "#divRight{ "
                + "float: right; "
                + "width: 50px; "
                + "height: 85px; "
                + "border: 2px #6666ff outset; "
                + "background-color: #189cd8; "
                + "padding: 5px; "
                + "color: #ffffff; "
                + "font-size: 11px; "
                + "font-weight: normal; "
                + "font-family: Tahoma, Geneva, sans-serif; "
                + "font-style: normal; "
                //+ "text-decoration: inherit; "
                + "line-height: 1.3em; "
                + "}"; //</editor-fold>

        bulletinBoard.setContentType("text/html");
        bulletinBoard.setText("");

        HTMLEditorKit kit = new HTMLEditorKit();
        bulletinBoard.setEditorKit(kit);

        // add some styles to the html
        StyleSheet styleSheet = kit.getStyleSheet();
        styleSheet.addRule(eBullStyles);

        Document setdoc = kit.createDefaultDocument();
        bulletinBoard.setDocument(setdoc);

        String initial = "<div id=\"divMsgs\">"
                + "<div id=\"divLeft\">"
                + "Hello Bob"
                + "</div>"
                + "<div id=\"divRight\">"
                + "How are you today?"
                + "</div>"
                + "</div>";

        try {
            Document doc = bulletinBoard.getDocument();
            bulletinBoard.setText(initial);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static void createAndShowGui() {
        jBulletins mainPanel = new jBulletins();
        JFrame frame = new JFrame("Bulletin Board");
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }
}

【问题讨论】:

    标签: java html css swing


    【解决方案1】:

    根据documentation,Swing 组件仅支持 HTML 3.2。

    而且,根据这个link,一些CSS属性没有被渲染:

    以下描述了渲染引擎支持的 CSS 属性:

    • 字体系列
    • 字体样式
    • 字体大小(支持相对单位)
    • 字体粗细
    • 字体
    • 颜色
    • 背景色(透明除外)
    • 背景图片
    • 后台重复
    • 背景位置
    • 背景
    • 文本装饰(闪烁和上划线除外)
    • 垂直对齐(仅 sup 和 super)
    • 文本对齐(对齐被视为居中)
    • 上边距
    • 右边距
    • 边距底部
    • 左边距
    • 边距
    • 上边距
    • 右填充
    • 底部填充
    • 向左填充
    • 填充
    • 边框顶部样式
    • 右边框样式
    • 边框底部样式
    • 左边框样式
    • border-style(仅支持 inset、outset 和 none)
    • 边框顶部颜色
    • 右边框颜色
    • 边框底色
    • 边框左色
    • 边框颜色
    • 列表样式图像
    • 列表样式类型
    • 列表样式位置

    以下已建模,但当前未渲染。

    • 字体变体
    • 背景附件(背景始终视为滚动)
    • 字间距
    • 字母间距
    • 文本缩进
    • 文本转换
    • 行高
    • border-top-width(用于指示是否应使用边框)
    • 边框右宽
    • 边框底部宽度
    • 边框左宽
    • 边框宽度
    • 边框顶部
    • 右边框
    • 边框底部
    • 左边框
    • 边框
    • 宽度
    • 高度
    • 浮动
    • 清除
    • 显示
    • 空白
    • 列表样式

    【讨论】:

      【解决方案2】:

      JEditorPane 只提供 HTML 3.2 支持,所以我敢打赌它不支持我们习惯的所有 css 属性。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多