Swing/HexFormatterSpinner のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/HexFormatterSpinner へ行く。
- 1 (2013-06-03 (月) 04:18:20)
- 2 (2013-06-05 (水) 02:27:40)
- 3 (2013-10-21 (月) 20:50:00)
- 4 (2014-11-15 (土) 01:06:54)
- 5 (2014-12-02 (火) 15:55:42)
- 6 (2016-02-18 (木) 15:57:48)
- 7 (2016-05-26 (木) 14:57:32)
- 8 (2017-04-04 (火) 14:17:08)
- 9 (2017-08-09 (水) 15:43:51)
- 10 (2018-08-12 (日) 18:40:35)
- 11 (2018-10-16 (火) 13:29:02)
- 12 (2019-04-26 (金) 17:48:33)
- 13 (2019-04-26 (金) 19:59:38)
- 14 (2019-07-30 (火) 22:06:08)
- 15 (2021-04-02 (金) 17:10:56)
- 16 (2022-08-20 (土) 22:25:44)
- category: swing folder: HexFormatterSpinner title: JSpinnerの表記を16進数にする tags: [JSpinner, DefaultFormatter, Font] author: aterai pubdate: 2013-06-03T04:18:20+09:00 description: JSpinnerの表記を16進数にして、そのUnicodeコードポイントに割り当てられた文字を表示します。 image:
概要
JSpinner
の表記を16
進数にして、そのUnicode
コードポイントに割り当てられた文字を表示します。
Screenshot
Advertisement
サンプルコード
private static DefaultFormatterFactory makeFFactory() {
DefaultFormatter formatter = new DefaultFormatter() {
@Override public Object stringToValue(String text) throws ParseException {
return Integer.valueOf(text, 16);
}
@Override public String valueToString(Object value) throws ParseException {
return String.format("%06X", (Integer) value);
}
};
formatter.setValueClass(Integer.class);
formatter.setOverwriteMode(true);
return new DefaultFormatterFactory(formatter);
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、DefaultFormatter#stringToValue(String)
とDefaultFormatter#valueToString(Object)
をオーバーライドして、0x0
から0x10FFFF
までの整数を16
進数で表示するFormatter
を作成してJSpinner
に設定しています。
JSpinner
から取得した数値(コードポイント)から文字を生成する時、サロゲートペアなどの基本多言語面(BMP
)外に対応するために、Sample Usage (The Java™ Tutorials > Internationalization > Working with Text)を参考にして、以下のような方法を使用しています。
int code = ((Integer) spinner.getValue()).intValue();
//char[] ca = Character.toChars(code);
String str = new String(Character.toChars(code));
IPAmj明朝とIPAex明朝フォントがインストールされている場合、その文字の形の違いを比較できます。
8.0.212-amzn
で実行するとゲタ文字や一部の表示が壊れる?11.0.3-amzn
は正常- パネルのリサイズで再描画されると正常に戻ったり壊れたりする場合がある?
参考リンク
- Fontのアウトラインを取得して文字列の内部を修飾する
- IPAmj明朝フォント | 文字情報基盤整備事業
- IPAexフォント/IPAフォント
- IPAmj明朝とIPAex明朝で形の違う字 NAOI's fotolife - 20130411131759