2012-06-05 2 views
0

У меня есть JTextField со слушателем для текстового события.Слушатели и их объекты

Могу ли я использовать этот прослушиватель для воздействия на тот же объект, который он слушает? Например, если он обнаруживает «проблемное» изменение, он должен удалить весь текст в том же объекте JTextField.

Возможно ли это? Кажется, что это не работает ...

Примером является следующее: .

this.txtSearch.getDocument().addDocumentListener(new DocumentListener() { 
public void changedUpdate(DocumentEvent e) { 
    validate(); 
} 

public void removeUpdate(DocumentEvent e) { 
    validate(); 
} 

public void insertUpdate(DocumentEvent e) { 
    validate(); 
} 

private void validate(){ 
    if not_good(txtSearch.getText()) { 
     txtSearch.setText(""); 
    } 
} 
+0

* "Это не похоже, работает ... »* Возможно, у него выходной. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

В этом случае может потребоваться ['JFormattedTextField'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFormattedTextField.html). Подробнее см. В разделе «Использование форматированных текстовых полей» (http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html). –

+0

* «Например, если он обнаруживает« проблемное »изменение, он должен удалить весь текст в том же объекте JTextField.» * Итак .. если я набрал 55 символов правильно, но 56-й недействителен, я теряю 55 правильные символы? Это * суровый. * –

ответ

2

Изменение текста в JTextField из textChanged случае, вероятно, вызовет (возможно, бесконечный) цикл textChanged событий. Не делай этого.

Если вы хотите проверить ввод на JTextField, используйте InputVerifier.

Javadoc содержит some examples of how to use it, посмотрите.

+0

Хороший вопрос! Благодаря! – averageman

+0

это хорошая точка +1, но (я забыл) ... – mKorbel

1
  • для JTextComponent вы должны использовать правильные методы, которые получили доступ к ИТС Model

  • Document является Model для JTextComponent

для вывода с клавиатуры вы получили два варианта

  • для выхода из JTextComponent к внешней (на другой элемент (ы) в графическом интерфейсе Swing) использовать DocumentListener

  • для changes/filtering/modify внутри JTextComponent использовать DocumentFilter

Смежные вопросы