Swing/TabSize のバックアップの現在との差分(No.1)
2023-04-10 (月) 00:10:17
概要
JTextPane
のStyledDocument
が使用するパラグラフ属性として、タブストップが展開する文字数を設定します。
Java Forums - tabsize in JTextPane
Screenshot
Advertisement
サンプルコード
#spanend
#spanadd
textpane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
#spanend
#spanadd
FontMetrics fm = textpane.getFontMetrics(textpane.getFont());
#spanend
#spanadd
int charWidth = fm.charWidth('m');
#spanend
#spanadd
int tabLength = charWidth * 4;
#spanend
#spanadd
TabStop[] tabs = new TabStop[10];
#spanend
#spanadd
for (int j = 0; j < tabs.length; j++) {
#spanend
tabs[j] = new TabStop((j + 1) * tabLength);
#spanadd
}
#spanend
#spanadd
TabSet tabSet = new TabSet(tabs);
#spanend
#spanadd
SimpleAttributeSet attrs = new SimpleAttributeSet();
#spanend
#spanadd
StyleConstants.setTabSet(attrs, tabSet);
#spanend
#spanadd
int l = textpane.getDocument().getLength();
#spanend
#spanadd
textpane.getStyledDocument().setParagraphAttributes(0, l, attrs, false);
#spanend
#spanadd
View in GitHub: Java, Kotlintextpane.setFont(new Font("monospaced", Font.PLAIN, 12)); FontMetrics fm = textpane.getFontMetrics(textpane.getFont()); int charWidth = fm.charWidth('m'); int tabWidth = charWidth * 4; TabStop[] tabs = new TabStop[10]; for(int j=0;j<tabs.length;j++) { tabs[j] = new TabStop((j+1)*tabWidth); } TabSet tabSet = new TabSet(tabs); SimpleAttributeSet attrs = new SimpleAttributeSet(); StyleConstants.setTabSet(attrs, tabSet); int l = textpane.getDocument().getLength(); textpane.getStyledDocument().setParagraphAttributes(0, l, attrs, false);
解説
-
JTextArea
- JTextArea#setTabSize(int)メソッドでタブサイズの指定が可能
-
JTextPane
-
JTextPane
からStyledDocument
を取得し、TabStop
から作成したTabSet
をパラグラフ属性として追加することでタブの幅を指定
-