2015-03-07 3 views
1

Я создал программу, которая динамически получает данные с панели, но мой код нуждается в том, чтобы пользователь нажал кнопку ввода для данных, которые нужно обновить. Есть ли прослушиватель изменений или другие слушатели, которые могут обновлять данные из Jtextfield всякий раз, когда он обновляется? Благодаря!Сменить прослушиватель для поля JText

+0

Не могли бы вы предоставить код для нас, чтобы посмотреть, пожалуйста? –

+1

Да, есть. Прикрепите [DocumentListener] (http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html) к документу текстового поля. – kiheru

ответ

4

Просто добавьте слушателя в текстовое поле так, что он отслеживает, когда текст изменяется

textfieldName.getDocument().addDocumentListener(new DocumentListener() { 
    // implement the methods 
}); 
0

Как уже было сказано - использовать DocumentListener для отслеживания изменений на JTextField, однако, из-за DocumentListener является своего рода «overengineered» , и существует очень мало случаев использования, где вы должны различать различные типы изменений (insertUpdate, removeUpdate и changedUpdate), что вы можете сделать:

Ящик с интерфейсом, который расширяет DocumentListener и обеспечивает стандартную реализацию всех методов DocumentListener:

@FunctionalInterface 
public interface SimpleDocumentListener extends DocumentListener { 
    void update(DocumentEvent e); 

    @Override 
    default void insertUpdate(DocumentEvent e) { 
     update(e); 
    } 
    @Override 
    default void removeUpdate(DocumentEvent e) { 
     update(e); 
    } 
    @Override 
    default void changedUpdate(DocumentEvent e) { 
     update(e); 
    } 
} 

, а затем использовать его на JTextField:

jTextField.getDocument().addDocumentListener(new SimpleDocumentListener() { 
    @Override 
    public void update(DocumentEvent e) { 
     // Your code here 
    } 
}); 

или вы можете даже использовать его с лямбда-выражения:

jTextField.getDocument().addDocumentListener((SimpleDocumentListener) e -> { 
    // Your code here 
}); 
Смежные вопросы