Используйте DocumentFilter , чтобы изменить текст по мере его поступления.
Не самый красивый источник, и он не на 100% правильный, просто показывает, как он работает. Смотри оригинал здесь
((AbstractDocument)textField.getDocument()).setDocumentFilter(new UppercaseDocumentFilter());
class UppercaseDocumentFilter extends DocumentFilter {
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String text, AttributeSet attr)
throws BadLocationException {
fb.insertString(offset, text.toUpperCase(), attr);
}
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, AttributeSet attrs)
throws BadLocationException {
fb.replace(offset, length, text.toUpperCase(), attrs);
}
}