我正在安装警报,但他们有一个界面,我必须给各个区域命名。问题是他们只能接受英语中不存在的希腊字符,否则他们必须是英语等价物。 例如,如果我写“ΠΑΡΑΘΥΡΟ”,字母1,2,3,5,6,7必须用英语输入,因为与出现的希腊字母相同。但是字母0和4只能是希腊语。 我只关心首都。 有关如何使用2个简单的jtextfields的任何想法? 谢谢!
答案 0 :(得分:3)
使用HashMap翻译字符。由于问题域很小并且可能永远不会改变,因此对地图内容进行硬编码是合理的,如下所示:
private static final Map<Character, Character> GREEK_TO_ROMAN = new HashMap<>();
static {
GREEK_TO_ROMAN.put('\u0391', '\u0041'); // uppercase alpha
GREEK_TO_ROMAN.put('\u03A1', '\u0050'); // uppercase rho
// ...
}
然后获取输入字符串的字符数组,根据需要翻译字符,并从更改的数组中创建一个新的字符串:
String s = "ΠΑΡΑΘΥΡΟ";
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
Character repl = GREEK_TO_ROMAN.get(chars[i]);
if (repl != null)
chars[i] = repl;
}
s = new String(chars);
JTextField如何发挥作用我还没有看到,但也许如果你想要你可以将它子类化,覆盖getText()
方法并确保它已经转换的任何String。