• 追加された行はこの色です。
  • 削除された行はこの色です。
---
title: JSpinnerの表記を16進数にする
tags: [JSpinner, DefaultFormatter, Font]
author: aterai
pubdate: 2013-06-03T04:18:20+09:00
description: JSpinnerの表記を16進数にして、そのUnicodeコードポイントに割り当てられた文字を表示します。
---
* 概要 [#gd25fd97]
`JSpinner`の表記を`16`進数にして、その`Unicode`コードポイントに割り当てられた文字を表示します。

#download(https://lh4.googleusercontent.com/-eTZU_kuJGK4/UauUgRcPuTI/AAAAAAAABtc/7FNouA9JcLI/s800/HexFormatterSpinner.png)

* サンプルコード [#t5f5a11f]
#code(link){{
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);
}
}}

* 解説 [#vce45de0]
上記のサンプルでは、`DefaultFormatter#stringToValue(String)`と`DefaultFormatter#valueToString(Object)`をオーバーライドして、`0`から`0x10FFFF`までの整数を`16`進数で表示する`Formatter`を作成し、`JSpinner`に設定しています。

----
- `JSpinner`から取得した数値(コードポイント)から文字を生成する時、サロゲートペアなどの基本多言語面(`BMP`)外に対応するために以下のような方法を使用しています。
-- 参考: [http://docs.oracle.com/javase/tutorial/i18n/text/usage.html Sample Usage (The Java™ Tutorials > Internationalization > Working with Text)]

#code{{
int code = ((Integer) spinner.getValue()).intValue();
//char[] ca = Character.toChars(code);
String str = new String(Character.toChars(code));
}}

----
[http://mojikiban.ipa.go.jp/download.html IPAmj明朝]と[http://ipafont.ipa.go.jp/ IPAex明朝フォント]がインストールされている場合、その文字の形の違いを比較することができます。

- [http://mojikiban.ipa.go.jp/download.html IPAmj明朝フォントダウンロード | IPA 文字情報基盤]
- [http://mojikiban.ipa.go.jp/1300.html IPAmj明朝フォント | 文字情報基盤整備事業]
- [http://ipafont.ipa.go.jp/ IPAexフォント/IPAフォント]

* 参考リンク [#ga82bd73]
- [[Fontのアウトラインを取得して文字列の内部を修飾する>Swing/LineSplittingLabel]]
- [http://f.hatena.ne.jp/NAOI/20130411131759 IPAmj明朝とIPAex明朝で形の違う字 NAOI's fotolife - 20130411131759]

* コメント [#td71f10f]
#comment
#comment