Swing/CondensedFontLabel のバックアップの現在との差分(No.1)
- category: swing
folder: CondensedFontLabel
title: Fontに長体をかけてJTextAreaで使用する
tags: [Font, JLabel, JTextArea, AffineTransform]
author: aterai
pubdate: 2016-12-19T00:45:00+09:00
description: 文字に長体をかけたフォントを生成し、これをJTextAreaなどのコンポーネントで使用します。
image: https://drive.google.com/uc?export=view&id=1uTWfknLeV-mrE81h-aAWdGPHYOpf9dEC1g
image: https://drive.google.com/uc?id=1uTWfknLeV-mrE81h-aAWdGPHYOpf9dEC1g
hreflang:
href: https://java-swing-tips.blogspot.com/2017/03/make-condensed-font-and-use-it-with.html lang: en
概要
文字に長体をかけたフォントを生成し、これをJTextArea
などのコンポーネントで使用します。
Screenshot
Advertisement
Screenshot
Advertisement
サンプルコード
#spandel
Font font = new Font(Font.MONOSPACED, Font.PLAIN, 18).deriveFont(
#spanend
AffineTransform.getScaleInstance(.9, 1d));
#spanadd
AffineTransform at = AffineTransform.getScaleInstance(.9, 1d);
#spanend
#spanadd
Font font = new Font(Font.MONOSPACED, Font.PLAIN, 18).deriveFont(at);
#spanend
textArea.setFont(font);
View in GitHub: Java, Kotlin解説
- 上:
JTextArea(condensed: 0.9)
-
90%
の変形をかけた長体のフォントを作成し、JTextArea
に設定 - 水平比率
90%
の変形をかけた長体フォントを作成してJTextArea
に設定
-
- 中:
GlyphVector(condensed: 0.9)
-
90%
の変形をかけた長体のフォントを作成し、そのFont
からFontMetrics
、GlyphVector
を生成して文字列を描画 - 一文字変形する場合は、
GlyphVector#setGlyphTransform(idx, affineTransform)
を使用する方法もある - 水平比率
90%
の変形をかけた長体フォントを作成し、そのFont
からFontMetrics
とGlyphVector
を生成して文字列を描画 - 一文字ごとに変形する場合は
GlyphVector#setGlyphTransform(idx, affineTransform)
を使用する方法もある
-
- 下:
LineBreakMeasurer(condensed: 0.9)
-
90%
の変形をかけた長体のフォントを作成し、そのFont
をAttributedString#addAttribute(TextAttribute.FONT, font)
で属性付き文字列に設定 - 水平比率
90%
の変形をかけた長体フォントを作成してAttributedString#addAttribute(TextAttribute.FONT, font)
メソッドで属性付き文字列に設定 LineBreakMeasurer
、TextLayout
で属性付き文字列を描画
-
参考リンク
- Font#deriveFont(int, AffineTransform) (Java Platform SE 8)
- JLabel内のアイコンにJLayerを使用してバッジを表示する
- [JDK-8165943] LineBreakMeasurer does not measure correctly if TextAttribute.TRACKING is set. - Java Bug System