1

以下のコードを書きました。JTextField からの入力をチェックし、ユーザーが数字を入力していることを確認します。そうでない場合、ボックスが赤く点滅し、無効な文字が削除されます。

tipArray[] は、ループを使用して JFrame に追加する JTextFields の配列です。

次のコードをすべての可能な配列 (tipArray[0]、tipArray[1] ....tipArray[6]) に適用するにはどうすればよいですか?

tipArray[6].addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
    char keyChar = e.getKeyChar();;
    char[] badCharArray = "abcdefghijklmnopqrstuvwxyz-`~!@#$%^&*()[,]{}<>_+=|\"':;?/ ".toCharArray();
        for (int i = 0; i < badCharArray.length; i++) {
            if (badCharArray[i] == keyChar) {
                tipArray[1].setBackground(Color.RED);
                }
                } 
            }
@Override
public void keyReleased(KeyEvent e) {
    if (tipArray[6].getBackground() == Color.RED) {
        if (tipArray[6].getText() != "0"){
            String removeLastLetter = tipArray[1].getText().substring(0, tipArray[6].getText().length()-1);
            tipArray[6].setText(removeLastLetter);
            tipArray[6].setBackground(Color.WHITE);
        }
    }
}

});

私が試したループは機能しません:

for (int i = 0; i <= 6; i++) {
tipArray[i].addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
    char keyChar = e.getKeyChar();;
    char[] badCharArray = "abcdefghijklmnopqrstuvwxyz-`~!@#$%^&*()[,]{}<>_+=|\"':;?/ ".toCharArray();
        for (int x = 0; x < badCharArray.length; x++) {
            if (badCharArray[x] == keyChar) {
                tipArray[i].setBackground(Color.RED);
                }
                } 
            }
@Override
public void keyReleased(KeyEvent e) {
    if (tipArray[i].getBackground() == Color.RED) {
        if (tipArray[i].getText() != "0"){
            String removeLastLetter = tipArray[i].getText().substring(0, tipArray[i].getText().length()-1);
            tipArray[i].setText(removeLastLetter);
            tipArray[i].setBackground(Color.WHITE);
        }
    }
}

});

}

^上記の結果、「if (badCharArray[x] == keyChar) {」行の後のすべての変数 i に構文エラーが発生します。

4

1 に答える 1

1

2番目のforループのカウンターを別の変数(おそらくiではなくz)に変更します。現在のように重複した変数があります(2つのi)。また、KeyListenerが失敗することがあるため、無効な文字のチェックには、KeyListenerではなくDocumentListenerを使用することをお勧めします。

于 2012-08-07T00:17:56.917 に答える