我正在使用JTextPane
來渲染某些HTML。我正在使用HTMLEditorKit
和StyleSheet
將規則添加到code
屬性,因此它看起來與StackOverflow上的代碼非常相似。問題在於JTextPane
不會在代碼上呈現填充(1像素頂部/底部,5像素左/右),即使padding
屬性被列爲爲支持的屬性之一in the documentation。未在JTextPane中渲染的CSS填充
這是我希望看到(如圖this CSSDeck Lab): ←
↑ - ↑↑ - ↑
編輯:
我已經使用在<code>
標籤交換我的HTML並通過@Sharcoux的建議切換到<span>
。這使得待使用代碼的字體大小與<pre>
標籤中的文字相同,從而使紅色背景具有與綠色邊框相同的高度,但是,預期結果仍然不會生成。如果你有興趣,Here是原始圖像。
我也試圖與文本移動CSS內聯,但無濟於事。
MCVE(也編輯):
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
public class CodePaddingMCVE {
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
JFrame frame = new JFrame("Code Padding Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextPane tp = new JTextPane();
tp.setContentType("text/html");
HTMLEditorKit kit = new HTMLEditorKit();
tp.setEditorKit(kit);
StyleSheet sheet = kit.getStyleSheet();
sheet.addRule("span {padding: 1px 5px; background-color: red}"); //Using span here
sheet.addRule("pre {padding: 0px; background-color: green}");
tp.setDocument(kit.createDefaultDocument());
tp.setText("<html><pre>NotCode<span>Code</span>NotCode</pre></html>"); //Using <span> here too
JScrollPane sp = new JScrollPane(tp) {
private static final long serialVersionUID = 1L;
@Override
public Dimension getPreferredSize() {
return new Dimension(250, 50);
}
};
frame.getContentPane().add(sp);
frame.pack();
frame.setVisible(true);
});
}
}
我使用OS X約塞米蒂15年10月10日時,Eclipse Mars.2 4.5.2和Java 8 [1.8.0_66]。
您應該使用span元素而不是代碼。而且我不確定預標籤是否被識別,但我不記得,現在正在使用我的手機。 – Sharcoux