Я этот код, который «отключает» пользовательский ввод на JTextField после п вставляются символы:Блок текста письма после п символов
JTextField tf = new JTextField();
tf.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (((JTextField) e.getSource()).getText().length() > n) {
e.consume();
}
}
});
Он работает, но мне было интересно, если есть альтернатива, потому что я попробовал это на старом медленном компьютере, и когда я ввожу что-то в текстовое поле, добавляется письмо, тогда оно исчезает ... Я бы хотел избежать использования e.consume()
после ввода пользователем и вместо этого предотвратить помехи.
Возможно ли это?
EDIT
Я забыл упомянуть, что я использовал JTextField
только для этого примера, но я хотел бы этот код для работы с родовыми ввода текста компонентов, как JTextPane
, JTextArea
, и т.д.
это может помочь: http://stackoverflow.com/questions/3519151/how-to-limit-the-number-of-characters- in-jtextfield –
Кажется, что documentFilter - это путь для всех этих случаев. JTextPane поддерживает документы, а для JTextArea: http://www.linuxquestions.org/questions/programming-9/java-jtextarea-limiting-amount-of-characters-entered-155469/#post805335 –
Все, что реализует 'JTextComponent 'interface имеет документ. Если конкретный документ поддерживает setDocumentFilter (например, как в 'AbstractDocument'), вы можете использовать этот метод. http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html. –