Swing/SeparatorOnTextPane のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SeparatorOnTextPane へ行く。
- title: JTextPaneにJSeparatorを追加する tags: [JTextPane, HTMLEditorKit, HTMLDocument, JSeparator, JLabel, MatteBorder] author: aterai pubdate: 2015-04-20T00:00:12+09:00 description: JTextPaneにセパレータとして、hr要素やJSeparator、MatteBorderを設定したJLabelなどを追加します。
概要
JTextPane
にセパレータとして、hr
要素やJSeparator
、MatteBorder
を設定したJLabel
などを追加します。
Screenshot
Advertisement
サンプルコード
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = new HTMLDocument();
textPane.setEditorKit(kit);
textPane.setDocument(doc);
textPane.setEditable(false);
textPane.setText("<html><hr>:<hr />");
textPane.insertComponent(new JLabel("JSeparator: "));
textPane.insertComponent(new JSeparator(JSeparator.HORIZONTAL));
insertBR(kit, doc);
textPane.insertComponent(new JLabel("MatteBorder1: "));
textPane.insertComponent(new JLabel() {
@Override public void updateUI() {
super.updateUI();
setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.RED));
}
@Override public Dimension getMaximumSize() {
return new Dimension(textPane.getSize().width, 1);
}
});
insertBR(kit, doc);
textPane.insertComponent(new JLabel("MatteBorder2: "));
textPane.insertComponent(new JLabel() {
@Override public void updateUI() {
super.updateUI();
setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.GREEN));
}
@Override public Dimension getPreferredSize() {
return new Dimension(textPane.getSize().width, 1);
}
@Override public Dimension getMaximumSize() {
return this.getPreferredSize();
}
});
insertBR(kit, doc);
textPane.insertComponent(new JLabel("JSeparator.VERTICAL "));
textPane.insertComponent(new JSeparator(JSeparator.VERTICAL) {
@Override public Dimension getPreferredSize() {
return new Dimension(1, 16);
}
@Override public Dimension getMaximumSize() {
return this.getPreferredSize();
}
});
textPane.insertComponent(new JLabel(" TEST"));
View in GitHub: Java, Kotlin解説
hr
要素htmlEditorKit.insertHTML(doc, doc.getLength(), "<hr />", 0, 0, null);
などで、hr
要素を追加
JSeparator
textPane.insertComponent(new JSeparator(JSeparator.HORIZONTAL));
で水平JSeparator
を追加
MatteBorder1
MatteBorder
を設定したテキスト無しのJLabel
を追加- 最大サイズが(
JTextPane
の幅×1
)になるよう、JLabel#getMaximumSize()
をオーバーライド
MatteBorder2
MatteBorder
を設定したテキスト無しのJLabel
を追加- 推奨サイズと最大サイズが(
JTextPane
の幅×1
)になるよう、JLabel#getPreferredSize()
とJLabel#getMaximumSize()
をオーバーライド
JSeparator.VERTICAL
textPane.insertComponent(new JSeparator(JSeparator.VERTICAL));
で垂直JSeparator
を追加JLabel#getPreferredSize()
、JLabel#getMaximumSize()
をオーバーライドしないと表示されない?