Swing/EditorPaneListStyle のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/EditorPaneListStyle へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JEditorPaneのStyleSheetを使ってlist bulletを画像に変更 #navi(../) #tags(JEditorPane, HTMLEditorKit, StyleSheet) RIGHT:Posted by &author(aterai); at 2012-12-10 *JEditorPaneのStyleSheetを使ってlist bulletを画像に変更 [#w8513598] ``JEditorPane``の``HTMLEditorKit``から``StyleSheet``を取得し、``list-style-image``を使って``List bullet``を変更します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh4.googleusercontent.com/-cVKrTqKAhYk/UMSbt8J09jI/AAAAAAAABY0/IWonqNua5dM/s800/EditorPaneListStyle.png) **サンプルコード [#pb688939] #code(link){{ HTMLEditorKit htmlEditorKit = (HTMLEditorKit)pane.getEditorKit(); StyleSheet styleSheet = htmlEditorKit.getStyleSheet(); String u = getClass().getResource(bullet).toString(); styleSheet.addRule(String.format("ul{list-style-image:url(%s);margin:0px 20px;", u)); //styleSheet.addRule("ul{list-style-type:circle;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:disc;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:square;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:decimal;margin:0px 20px;}"); }} **解説 [#hea62015] - 上: ``Default`` - 下: ``ul{list-style-image:url(bullet.png);}`` -- ``CSS``の``list-style-image``プロパティを使って、``bullet``を画像に変更 -- ``AlignmentY``が中心にならない?ので、画像の下に余白を追加 -- ``ul``のマージンも``margin:0px 20px;``に変更 ---- - ``javax.swing.text.html.CSS``は、``list-style-type``プロパティも対応しているので、``circle``, ``square``, ``decimal``などが``bullet``として使用できるが、サイズは固定 #code{{ styleSheet.addRule("ul{list-style-type:circle;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:disc;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:square;margin:0px 20px;}"); //styleSheet.addRule("ul{list-style-type:decimal;margin:0px 20px;}"); }} ---- - ``javax.swing.text.html.CSS``は、``a:hover``などの擬似クラス(``pseudo-classes``)や、``:before``などの擬似要素(``pseudo elements``)に対応していないので、以下のように``list-style-type:none``として``:before``で任意の文字を``bullet``に適用することができない #code{{ styleSheet.addRule("ul{list-style-type:none;margin:0px 20px;}"); styleSheet.addRule("ul li:before{content: "\u00BB";}"); }} ---- - ``javax.swing.text.html.StyleSheet.ListPainter#drawShape(...)``などをオーバーライドできれば直接``bullet``の形やサイズを変更できそうだが、コンストラクタがパッケージプライベート //**参考リンク **コメント [#x44086e8] #comment