私はJTextPane
を使ってHTMLをレンダリングしています。 HTMLEditorKit
とStyleSheet
を使用して、code
プロパティにルールを追加するので、StackOverflowのコードとまったく同じように見えます。問題は、レンダリングエンジンでがであるプロパティの1つとしてpadding
プロパティがリストされているにもかかわらず、がコード(1ピクセルの上端/下端、5ピクセル左/右)にパディングを描画しないことです。 in the documentation。ここでCSSパディングがJTextPaneにレンダリングされない
は、私が(this CSSDeck Labで示すように)見ることを期待するものである: ←
↑ - ↑↑ - ↑
EDIT:
私は<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ヨセミテ10.10.15、EclipseのMars.2 4.5.2、およびJava 8 [1.8.0_66]を使用しています。
コードの代わりにspan要素を使用する必要があります。そして、私はプリタグが認識されているかどうかはわかりませんが、私は覚えていませんし、私の電話で今すぐです。 – Sharcoux