JBKV5.1L10以降のGUIライブラリで、JBKV5.0L10と同じように補助文字を入力できなくするには、アプリケーションで以下のように実装してください。
JFInputLimitationを生成します。
JFInputLimitation#setEnableUnicodeType(Character.UnicodeBlock... enableUnicodeType)で補助文字以外の文字を入力可能にします。
入力可能文字種に含まれていない文字を入力不可能文字に指定します。
制御文字を入力不可能文字に指定します。
文字入力部品にJFInputLimitationを指定します。
例
実装例
JFFieldString field = new JFFieldString();
JFInputLimitation limit = new JFInputLimitation();
//補助文字以外の文字を全て入力可能に設定する
//サロゲートコード、補助文字以外の文字種を全て列挙します
limit.setEnableUnicodeType(
UnicodeBlock.ALPHABETIC_PRESENTATION_FORMS,
UnicodeBlock.ARABIC,
UnicodeBlock.ARABIC_PRESENTATION_FORMS_A,
UnicodeBlock.ARABIC_PRESENTATION_FORMS_B,
UnicodeBlock.ARMENIAN,
UnicodeBlock.ARROWS,
UnicodeBlock.BASIC_LATIN,
UnicodeBlock.BENGALI,
UnicodeBlock.BLOCK_ELEMENTS,
UnicodeBlock.BOPOMOFO,
UnicodeBlock.BOPOMOFO_EXTENDED,
UnicodeBlock.BOX_DRAWING,
UnicodeBlock.BRAILLE_PATTERNS,
UnicodeBlock.BUHID,
UnicodeBlock.CHEROKEE,
UnicodeBlock.CJK_COMPATIBILITY,
UnicodeBlock.CJK_COMPATIBILITY_FORMS,
UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS,
UnicodeBlock.CJK_RADICALS_SUPPLEMENT,
UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION,
UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS,
UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
UnicodeBlock.COMBINING_DIACRITICAL_MARKS,
UnicodeBlock.COMBINING_HALF_MARKS,
UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS,
UnicodeBlock.CONTROL_PICTURES,
UnicodeBlock.CURRENCY_SYMBOLS,
UnicodeBlock.CYRILLIC,
UnicodeBlock.CYRILLIC_SUPPLEMENTARY,
UnicodeBlock.DEVANAGARI,
UnicodeBlock.DINGBATS,
UnicodeBlock.ENCLOSED_ALPHANUMERICS,
UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS,
UnicodeBlock.ETHIOPIC,
UnicodeBlock.GENERAL_PUNCTUATION,
UnicodeBlock.GEOMETRIC_SHAPES,
UnicodeBlock.GEORGIAN,
UnicodeBlock.GREEK,
UnicodeBlock.GREEK_EXTENDED,
UnicodeBlock.GUJARATI,
UnicodeBlock.GURMUKHI,
UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS,
UnicodeBlock.HANGUL_COMPATIBILITY_JAMO,
UnicodeBlock.HANGUL_JAMO,
UnicodeBlock.HANGUL_SYLLABLES,
UnicodeBlock.HANUNOO,
UnicodeBlock.HEBREW,
UnicodeBlock.HIRAGANA,
UnicodeBlock.IDEOGRAPHIC_DESCRIPTION_CHARACTERS,
UnicodeBlock.IPA_EXTENSIONS,
UnicodeBlock.KANBUN,
UnicodeBlock.KANGXI_RADICALS,
UnicodeBlock.KANNADA,
UnicodeBlock.KATAKANA,
UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS,
UnicodeBlock.KHMER,
UnicodeBlock.KHMER_SYMBOLS,
UnicodeBlock.LAO,
UnicodeBlock.LATIN_1_SUPPLEMENT,
UnicodeBlock.LATIN_EXTENDED_A,
UnicodeBlock.LATIN_EXTENDED_ADDITIONAL,
UnicodeBlock.LATIN_EXTENDED_B,
UnicodeBlock.LETTERLIKE_SYMBOLS,
UnicodeBlock.LIMBU,
UnicodeBlock.MALAYALAM,
UnicodeBlock.MATHEMATICAL_OPERATORS,
UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,
UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
UnicodeBlock.MISCELLANEOUS_SYMBOLS,
UnicodeBlock.MISCELLANEOUS_SYMBOLS_AND_ARROWS,
UnicodeBlock.MISCELLANEOUS_TECHNICAL,
UnicodeBlock.MONGOLIAN,
UnicodeBlock.MYANMAR,
UnicodeBlock.NUMBER_FORMS,
UnicodeBlock.OGHAM,
UnicodeBlock.OPTICAL_CHARACTER_RECOGNITION,
UnicodeBlock.ORIYA,
UnicodeBlock.PHONETIC_EXTENSIONS,
UnicodeBlock.PRIVATE_USE_AREA,
UnicodeBlock.RUNIC,
UnicodeBlock.SINHALA,
UnicodeBlock.SMALL_FORM_VARIANTS,
UnicodeBlock.SPACING_MODIFIER_LETTERS,
UnicodeBlock.SPECIALS,
UnicodeBlock.SUPERSCRIPTS_AND_SUBSCRIPTS,
UnicodeBlock.SUPPLEMENTAL_ARROWS_A,
UnicodeBlock.SUPPLEMENTAL_ARROWS_B,
UnicodeBlock.SUPPLEMENTAL_MATHEMATICAL_OPERATORS,
UnicodeBlock.SYRIAC,
UnicodeBlock.TAGALOG,
UnicodeBlock.TAGBANWA,
UnicodeBlock.TAI_LE,
UnicodeBlock.TAMIL,
UnicodeBlock.TELUGU,
UnicodeBlock.THAANA,
UnicodeBlock.THAI,
UnicodeBlock.TIBETAN,
UnicodeBlock.UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
UnicodeBlock.VARIATION_SELECTORS,
UnicodeBlock.YI_RADICALS,
UnicodeBlock.YI_SYLLABLES,
UnicodeBlock.YIJING_HEXAGRAM_SYMBOLS
);
//以下の文字種はサロゲートコードのため指定しません。
//UnicodeBlock.HIGH_PRIVATE_USE_SURROGATES,
//UnicodeBlock.HIGH_SURROGATES,
//UnicodeBlock.LOW_SURROGATES,
//以下の文字種はJIS2004の4バイトの補助文字であるため指定しません。
//UnicodeBlock.AEGEAN_NUMBERS,
//UnicodeBlock.BYZANTINE_MUSICAL_SYMBOLS,
//UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,
//UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
//UnicodeBlock.CYPRIOT_SYLLABARY,
//UnicodeBlock.DESERET,
//UnicodeBlock.GOTHIC,
//UnicodeBlock.LINEAR_B_IDEOGRAMS,
//UnicodeBlock.LINEAR_B_SYLLABARY,
//UnicodeBlock.MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
//UnicodeBlock.MUSICAL_SYMBOLS,
//UnicodeBlock.OLD_ITALIC,
//UnicodeBlock.OSMANYA,
//UnicodeBlock.SHAVIAN,
//UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_A,
//UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B,
//UnicodeBlock.TAGS,
//UnicodeBlock.TAI_XUAN_JING_SYMBOLS,
//UnicodeBlock.UGARITIC,
//UnicodeBlock.VARIATION_SELECTORS_SUPPLEMENT,
//入力可能文字種に含まれていない文字を入力不可にする。
//(0x0~0xffのUnicodeコード値の範囲に含まれる以下の文字種)
//・java.lang.Character.OTHER_SYMBOL
//・java.lang.Character.FORMAT
//・java.lang.Character.DIRECTIONALITY_SEGMENT_SEPARATOR
char[] disableChars = {'\u00a6','\u00a7','\u00a9','\u00ad','\u00ae',
'\u00b0','\u00b2','\u00b3','\u00b6','\u00b9',
'\u00bc','\u00bd','\u00be'};
limit.setDisableChars(disableChars);
//制御文字を入力不可にする
for(char i=0x0000; i<=0x001f; i++){
limit.addDisableChar(i);
}
for(char i=0x007F; i<=0x009F; i++){
limit.addDisableChar(i);
}
//JFInputLimitationを指定
field.setInputLimitation(limit); |