为什么我的CSS不能正常使用Java?

时间:2014-08-05 19:51:12

标签: java html css swing

想知道你是否可以帮助我?我正在尝试用Java创建一些代码,通过实现JEditorPaneCSS中执行html代码。

我得到它来实现CSS编码的一些,但它似乎忽略了编码中的"float:"位。在JSFiddle(link)上,我让它运行得很完美,但是在Java / NB上它创建了容器,左边是div,它是小的,假设是div,但它放了它位于左侧div下方,而不是右侧。{1}}。我在想的是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();
            }
        });
    }
}

2 个答案:

答案 0 :(得分:5)

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

而且,根据这个link,一些CSS属性不会呈现:

  

以下描述了呈现引擎支持的CSS属性:

     
  • 字体家庭      
  • 字体风格      
  • font-size(支持相对单位)      
  • 字体重量      
  • 字体      
  • 色      
  • 背景色(透明除外)      
  • 背景图像      
  • 背景重复      
  • 背景位置      
  • 背景      
  • 文字装饰(闪烁和上线除外)      
  • vertical-align(仅限sup和super)      
  • text-align(将justify视为中心)      
  • 边距      
  • 余量右      
  • 边距      
  • 保证金左      
  • 余量      
  • 填充机顶      
  • 填充右      
  • 填充底      
  • 填充左      
  • 填充      
  • 边框顶式      
  • 右边框风格      
  • 下边框式      
  • 左边框风格      
  • border-style(仅支持inset,outset和none)      
  • 边框顶色      
  • 右边框的颜色      
  • 下边框色      
  • 左边框颜色      
  • 边框颜色      
  • 列表样式图像      
  • 列表样式类型      
  • 列表样式位置    
     

以下内容已建模,但目前尚未呈现。    

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

答案 1 :(得分:2)

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