Swing/HexFormatterSpinner のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- title: JSpinnerの表記を16進数にする tags: [JSpinner, DefaultFormatter, Font] author: aterai pubdate: 2013-06-03T04:18:20+09:00 description: JSpinnerの表記を16進数にして、そのUnicodeコードポイントに割り当てられた文字を表示します。
概要
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)
をオーバーライドして、0
から0x10FFFF
までの整数を16
進数で表示するFormatter
を作成し、JSpinner
に設定しています。
JSpinner
から取得した数値(コードポイント)から文字を生成する時、サロゲートペアなどの基本多言語面(BMP
)外に対応するために以下のような方法を使用しています。
int code = ((Integer) spinner.getValue()).intValue();
//char[] ca = Character.toChars(code);
String str = new String(Character.toChars(code));
IPAmj明朝とIPAex明朝フォントがインストールされている場合、その文字の形の違いを比較することができます。