すべてのテキストを大文字に変換する DocumentLitener があり、入力できるテキストの量も制限されます。これが私のクラスです:
public class UppercaseDocumentFilter extends DocumentFilter {
private int limit;
public UppercaseDocumentFilter(int maxCharacters) {
limit = maxCharacters;
}
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
if (fb.getDocument().getLength() + text.length() > limit) {
return;
}
fb.insertString(offset, text.toUpperCase(), attr);
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
if (fb.getDocument().getLength() + text.length() > limit) {
return;
}
fb.replace(offset, length, text.toUpperCase(), attrs);
}
@Override
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException {
fb.remove(offset, length);
}
}
私の問題はこれです。テキストフィールドの文字数制限が 10 だとします。5 文字入力します。次に、6 文字の単語をコピーします。フィールド内のテキストを CTRL+A (すべて選択) し、6 文字の単語を貼り付けて、5 文字の単語を置き換えようとします。しかし、それは私にそれをさせません.10文字の制限を超える5 + 6を実行しているとDocumentListenerが考えているためだと思います。
これに関する提案はありますか?