Swing/HexFormatterSpinner のバックアップ(No.1)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - 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)
 - 17 (2025-01-03 (金) 08:57:02)
 - 18 (2025-01-03 (金) 09:01:23)
 - 19 (2025-01-03 (金) 09:02:38)
 - 20 (2025-01-03 (金) 09:03:21)
 - 21 (2025-01-03 (金) 09:04:02)
 - 22 (2025-06-19 (木) 12:41:37)
 - 23 (2025-06-19 (木) 12:43:47)
 
 
TITLE:JSpinnerの表記を16進数にする
Posted by aterai at 2013-06-03
JSpinnerの表記を16進数にする
`JSpinnerの表記を16進数にして、そのUnicode`コードポイントに割り当てられた文字を表示します。
- &jnlp;
 - &jar;
 - &zip;
 
サンプルコード
DefaultFormatter hexformatter = new DefaultFormatter() {
  @Override public Object stringToValue(String text) throws ParseException {
    try{
      return Integer.valueOf(text, 16);
    }catch(NumberFormatException nfe) {
      throw new ParseException(text, 0);
    }
  }
  private final String MASK = "000000";
  @Override public String valueToString(Object value) throws ParseException {
    String str = MASK + Integer.toHexString((Integer)value).toUpperCase();
    int i = str.length() - MASK.length();
    return str.substring(i);
  }
};
hexformatter.setValueClass(Integer.class);
hexformatter.setOverwriteMode(true);
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明朝フォントがインストールされている場合、その文字を比較することができます。
