2015-12-14 1 views
1

В моем Java проекте, я хочу, чтобы проверить ввод в каждом JTextField в нескольких различных классах (с точно таким же кодом) ..Создание класса, который расширяет KeyListener

Прямо сейчас я тот же самый код скопирован и более, и мне предложили два варианта:

  1. Создайте метод и вызовите метод вместо этого.

  2. Создайте новый класс, который простирается от другого класса (я еще не знаю, который еще), который имеет необходимый метод.

код я использую сейчас:

totalAmount.addKeyListener(new KeyAdapter() { 
@Override 
    public void keyTyped(KeyEvent arg0) { 
    //do something 
    } 
}); 

И новый класс:

public class Listener extends KeyAdapter { 
    public void keyTyped(KeyEvent arg0){ 
    //do something 
    } 
} 

Проблема заключается в том, что я не знаю, если я простирающийся правильный класс, и как использовать новый класс, который я написал ...

Заранее благодарен!

+1

1) В вашем случае 'totalAmount.addKeyListener (instanceOfYourListener);' 2) Но вы должны использовать [ ' DocumentListener'] (https://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html) для проверки изменений в 'JTextField', а не' KeyListener'. –

+0

1) totalAmount.addKeyListener (new Listener() {keyTyped (arg0);}? Это не работает ... 2) Я пытаюсь проверить каждый введенный пользователем ключ, и это то, что дал мне затмение. .. Прямо сейчас код, который у меня есть, работает, мне просто нужно его копировать каждый раз ... – orohev

+0

Одним из способов было бы сделать 'totalAmount.addKeyListener (новый Listener());'. Однако вы также можете использовать только один экземпляр слушателя для всех ваших текстовых полей. –

ответ

4

Для того, чтобы делать то, что вы хотели с ключом адаптер вы будете использовать

totalAmount.addKeyListener(new Listener()); 

и код вашего ключа адаптера правильно.

public class Listener extends KeyAdapter { 
    public void keyTyped(KeyEvent arg0){ 
     //do something 
    } 
} 

Чтобы получить текст из JTextField можно либо использовать этот код внутри keyAdapter

System.out.println(totalAmount); 

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

public class documentListener implements DocumentListener //This is a listener 
{ 
    public void changedUpdate(DocumentEvent e){ 

    } 

    public void removeUpdate(DocumentEvent e){ 
     int lengthMe = e.getDocument().getLength(); 
     System.out.println(e.getDocument().getText(0,lengthMe)); 
    } 

    public void insertUpdate(DocumentEvent e){ 
     int lengthMe = e.getDocument().getLength(); 
     System.out.println(e.getDocument().getText(0,lengthMe)); 
    } 
} 

и он будет добавлен в JTextField с

totalAmount.getDocument().addDocumentListener(new documentListener()); 
+0

. Голосование за 1+ для «желательно, чтобы вы могли использовать DocumentListener». Фактически OP должен быть ** не ** добавлением KeyListener в JTextField, так как это может изменить собственное поведение текстового поля плохими и неожиданными способами. Я не уверен, какой ключ он прослушивает, но если его ввести ключ, лучшим решением будет добавить ActionListener в JTextField. –

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

  • Нет связанных вопросов^_^