概要

JTextPaneのパラグラフ属性にTabSetを設定し、TabStopによる文字列の揃えをテストします。

サンプルコード

textPane.setText(
    "LEFT1\tCENTER\tRIGHT1\t3.14\n"
  + "LEFT22\tCENTER22\tRIGHT22\t12.3\n"
  + "LEFT333\tCENTER333\tRIGHT333\t1.23\n"
  + "LEFT4444\tCENTER4444\tRIGHT4444\t0.9876\n");
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setTabSet(attr, new TabSet(new TabStop[] {
  new TabStop(0f,   TabStop.ALIGN_LEFT,    TabStop.LEAD_NONE),
  new TabStop(100f, TabStop.ALIGN_CENTER,  TabStop.LEAD_NONE),
  new TabStop(200f, TabStop.ALIGN_RIGHT,   TabStop.LEAD_NONE),
  new TabStop(250f, TabStop.ALIGN_DECIMAL, TabStop.LEAD_NONE),
  //new TabStop(300f, TabStop.ALIGN_BAR,     TabStop.LEAD_NONE),
}));
textPane.getStyledDocument().setParagraphAttributes(
  0, textPane.getDocument().getLength(), attr, false);
view all

解説

  • TabStop.ALIGN_LEFT
    • タブに続く文字をタブ位置に左揃えで配置
  • TabStop.ALIGN_CENTER
    • タブ以降の文字(次のタブ、または改行までのすべての文字)が、タブ位置を中心にして揃うように配置
  • TabStop.ALIGN_RIGHT
    • タブ以降の文字(次のタブ、または改行までのすべての文字)が、タブ位置に対して右揃えになるよう配置
  • TabStop.ALIGN_DECIMAL
    • タブ以降の文字を、タブ位置に対して小数点揃えになるよう配置
  • TabStop.ALIGN_BAR
    • JTextPaneでは未実装で、罫線は描画されない

  • メモ
    • リーダーとして、TabStop.LEAD_DOTSTabStop.LEAD_EQUALSTabStop.LEAD_HYPHENSTabStop.LEAD_THICKLINETabStop.LEAD_UNDERLINEが定義されているが、JTextPaneではこれらは描画されず、TabStop.LEAD_NONEと同じ扱い
    • ドキュメントの「タブ・セットは変更できません。」は、翻訳元は「It is also immutable.」なので、「TabSetTabStopはどちらも不変(イミュータブル)です。」の意味?

参考リンク

コメント