Browse Source
Merge in DESIGN/design from ~HADES/design:release/10.0 to release/10.0 * commit 'e372a89f8760655606a152d6182ba64b3fce694e': REPORT-27497 编辑单元格输入韩文时字会缺失 使用java自带方式判断 + 漏传代码 REPORT-27497 编辑单元格输入韩文时字会缺失feature/big-screen
Hades
4 years ago
6 changed files with 152 additions and 1 deletions
@ -0,0 +1,31 @@ |
|||||||
|
package com.fr.grid.action; |
||||||
|
|
||||||
|
import com.fr.design.os.impl.SupportOSImpl; |
||||||
|
import com.fr.grid.Grid; |
||||||
|
import com.fr.grid.help.GridHelper; |
||||||
|
import com.fr.stable.os.support.OSBasedAction; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author hades |
||||||
|
* @version 10.0 |
||||||
|
* Created by hades on 2020/8/12 |
||||||
|
*/ |
||||||
|
public class GridInputAction implements OSBasedAction { |
||||||
|
|
||||||
|
private Grid grid; |
||||||
|
private char ch; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void execute(Object... objects) { |
||||||
|
// win下韩语输入法与其他输入法不一样 在输入第二个字符时 就开始触发keyType 而其中grid的焦点转移会导致输入失效
|
||||||
|
boolean accept = SupportOSImpl.KOREAN_INPUT.support() && grid != null; |
||||||
|
if (accept) { |
||||||
|
grid.setNeedRequestFocus(!GridHelper.isKoreanCharacter(ch)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void register(Grid grid, char ch) { |
||||||
|
this.grid = grid; |
||||||
|
this.ch = ch; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
package com.fr.grid.help; |
||||||
|
|
||||||
|
/** |
||||||
|
* 韩文unicode编码范围 |
||||||
|
* http://www.ch2ko.com/hanguoyu/hanwen-unicode/
|
||||||
|
* |
||||||
|
* 韩文音节:AC00-D7AF |
||||||
|
* Character.UnicodeBlock.HANGUL_SYLLABLES |
||||||
|
* https://www.unicode.org/charts/PDF/UAC00.pdf
|
||||||
|
* |
||||||
|
* |
||||||
|
* 韩文兼容字母:3130-318F |
||||||
|
* Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO |
||||||
|
* https://www.unicode.org/charts/PDF/U3130.pdf
|
||||||
|
* |
||||||
|
* |
||||||
|
* 韩文字母:1100-11FF |
||||||
|
* Character.UnicodeBlock.HANGUL_JAMO |
||||||
|
* https://www.unicode.org/charts/PDF/U1100.pdf
|
||||||
|
* |
||||||
|
* |
||||||
|
* 韩文字母扩展A |
||||||
|
* Character.UnicodeBlock.HANGUL_JAMO_EXTENDED_A |
||||||
|
* https://www.unicode.org/charts/PDF/UA960.pdf
|
||||||
|
* |
||||||
|
* |
||||||
|
* 韩文字母扩展B |
||||||
|
* haracter.UnicodeBlock.HANGUL_JAMO_EXTENDED_B |
||||||
|
* https://www.unicode.org/charts/PDF/UD7B0.pdf
|
||||||
|
* |
||||||
|
* |
||||||
|
* 使用java内部的韩文unicode集判断 |
||||||
|
* |
||||||
|
* @author hades |
||||||
|
* @version 10.0 |
||||||
|
* Created by hades on 2020/8/7 |
||||||
|
*/ |
||||||
|
public class GridHelper { |
||||||
|
/** |
||||||
|
* 韩国货币符号 |
||||||
|
*/ |
||||||
|
private static final char HEX_20A9 = 0x20A9; |
||||||
|
|
||||||
|
public static boolean isKoreanCharacter(char value) { |
||||||
|
Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(value); |
||||||
|
return unicodeBlock == Character.UnicodeBlock.HANGUL_JAMO |
||||||
|
|| unicodeBlock == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO |
||||||
|
|| unicodeBlock == Character.UnicodeBlock.HANGUL_SYLLABLES |
||||||
|
|| unicodeBlock == Character.UnicodeBlock.HANGUL_JAMO_EXTENDED_A |
||||||
|
|| unicodeBlock == Character.UnicodeBlock.HANGUL_JAMO_EXTENDED_B |
||||||
|
|| value == HEX_20A9; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
package com.fr.grid.help; |
||||||
|
|
||||||
|
import junit.framework.TestCase; |
||||||
|
import org.junit.Assert; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author hades |
||||||
|
* @version 10.0 |
||||||
|
* Created by hades on 2020/8/7 |
||||||
|
*/ |
||||||
|
public class GridHelperTest extends TestCase { |
||||||
|
|
||||||
|
/** |
||||||
|
* 为空 |
||||||
|
*/ |
||||||
|
private char ch; |
||||||
|
|
||||||
|
public void testIsKoreanCharacter() { |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('1')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('A')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('z')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('测')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('測')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('鐪')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('&')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter(' ')); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter(ch)); |
||||||
|
Assert.assertFalse(GridHelper.isKoreanCharacter('は')); |
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('먀')); |
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('이')); |
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('한')); |
||||||
|
// 韩文音节
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('휖')); |
||||||
|
// 韩文兼容字母
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('ㆋ')); |
||||||
|
// 韩文字母
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('ᇪ')); |
||||||
|
// 韩文字母扩展A
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('ꥵ')); |
||||||
|
// 韩文字母扩展B
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('ퟂ')); |
||||||
|
// 韩文货币符号
|
||||||
|
Assert.assertTrue(GridHelper.isKoreanCharacter('₩')); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue