想知道你是否可以帮助我?我正在尝试用Java创建一些代码,通过实现JEditorPane
在CSS
中执行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();
}
});
}
}
答案 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属性。