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)
TITLE:JSpinnerの表記を16進数にする #navi(../) RIGHT:Posted by &author(aterai); at 2013-06-03 *JSpinnerの表記を16進数にする [#gd25fd97] ``JSpinner``の表記を``16``進数にして、その``Unicode``コードポイントに割り当てられた文字を表示します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh4.googleusercontent.com/-eTZU_kuJGK4/UauUgRcPuTI/AAAAAAAABtc/7FNouA9JcLI/s800/HexFormatterSpinner.png) **サンプルコード [#t5f5a11f] #code(link){{ 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); }} **解説 [#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)); }} ---- IPAmj明朝とIPAex明朝フォントがインストールされている場合、その文字を比較することができます。 - [http://mojikiban.ipa.go.jp/download.html IPAmj明朝フォントダウンロード | IPA 文字情報基盤] - [http://ipafont.ipa.go.jp/ IPAexフォント/IPAフォント] **参考リンク [#ga82bd73] - [[Fontのアウトラインを取得して文字列の内部を修飾する>Swing/LineSplittingLabel]] **コメント [#td71f10f] #comment