Swing/CenteredMultiRowCellEditor のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CenteredMultiRowCellEditor へ行く。
- 1 (2021-03-01 (月) 00:25:33)
- category: swing
folder: CenteredMultiRowCellEditor
title: JTextPaneで中央揃え、行折返し可能なリストセルエディタを作成する
tags: [JTextPane, JList, JFrame]
author: aterai
pubdate: 2021-03-01T00:02:34+09:00
description: JTextPaneで中央揃え、行折返し可能なエディタを作成し、JFrameに追加してリストセルの編集に使用します。
image: https://drive.google.com/uc?id=1rvx8N6fXs-31JKGBXFSd18bMepyvmIqN
hreflang:
href: https://java-swing-tips.blogspot.com/2021/02/create-jlist-heavyweight-cell-editor.html lang: en
概要
JTextPaneで中央揃え、行折返し可能なエディタを作成し、JFrameに追加してリストセルの編集に使用します。
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