概要
JTextPane
で中央揃え、行折返し可能なエディタを作成し、JWindow
に追加してリストセルの編集に使用します。
Screenshot
Advertisement
サンプルコード
class WrapLabelView extends LabelView {
protected WrapLabelView(Element element) {
super(element);
}
@Override public float getMinimumSpan(int axis) {
switch (axis) {
case View.X_AXIS:
return 0;
case View.Y_AXIS:
return super.getMinimumSpan(axis);
default:
throw new IllegalArgumentException("Invalid axis: " + axis);
}
}
}
View in GitHub: Java, Kotlin解説
JTextArea
JTextArea#setLineWrap(true)
で行折返しが設定可能- デフォルト左揃え、
JTextArea#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)
で右揃えは可能だが、中央揃えは設定不可javax.swing.text.WrappedPlainView.WrappedLine
クラスなどがパッケージプライベートなのでカスタマイズしづらい
JTextPane
- 行折返し設定が存在しないので、折り返し可能な
LabelView
を作成、使用するEditorKit
を設定する必要がある - 中央揃えは本文のパラグラフ属性に
StyleConstants.ALIGN_CENTER
を設定することで実現可能StyledDocument doc = textPane.getStyledDocument(); SimpleAttributeSet center = new SimpleAttributeSet(); StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER); doc.setParagraphAttributes(0, doc.getLength(), center, false);
- 行折返し設定が存在しないので、折り返し可能な
参考リンク
- JTextAreaとJFrameで幅固定、文字列の折り返し、親枠外まで高さ拡大可能なセルエディタを作成する
- java - JTextPane line wrap behavior - Stack Overflow
- JWindow内にフォーカス可能なコンポーネントを配置する