アラームをインストールしていますが、さまざまなゾーンに名前を付ける必要があるインターフェイスがあります。問題は、英語に存在しないギリシャ文字のみを受け入れることができることです。たとえば、「ΠΑΡΑΘΥΡΟ」と書いた場合、文字 1、2、3、5、6、7 はギリシャ語と同じなので英語で入力する必要があります。ただし、文字 0 と 4 のみがギリシャ語でなければなりません。私は首都だけを気にします。2 つの単純な jtextfields でそれを行う方法について何か考えはありますか? ありがとうございました!
2362 次
1 に答える
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()
メソッドを上書きして、生成される文字列が既に変換されていることを確認してください。
于 2012-07-21T09:25:36.700 に答える