TITLE:JSpinnerの表記を16進数にする

Posted by at 2013-06-03

JSpinnerの表記を16進数にする

`JSpinnerの表記を16進数にして、そのUnicode`コードポイントに割り当てられた文字を表示します。

  • &jnlp;
  • &jar;
  • &zip;
HexFormatterSpinner.png

サンプルコード

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`に設定しています。


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

IPAmj明朝とIPAex明朝フォントがインストールされている場合、その文字を比較することができます。

参考リンク

コメント