2016-01-08 4 views
0

Является ли хорошей практикой добавить несколько слушателей для JComponent в разные части кода? Должен ли я создать одного более крупного слушателя?Два KeyListeners на JTextField

Например, у меня есть JTextField, я заметил, что вызываются оба KeyListeners.

JTextField textField = new JTextField(); 
    textField.addKeyListener(new KeyListener() 
    { 
    @Override 
    public void keyTyped(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) 
    { 
     something(); 
    } 
    }); 

    textField.addKeyListener(new KeyListener() 
    { 
    @Override 
    public void keyTyped(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) 
    { 
     somethingElse(); 
    } 
    }); 
+2

его около одного DocumentListener/Filter, не используйте KeyListener – mKorbel

+0

Возможно, было бы лучше использовать KeyAdapter. Этот класс имеет пустые методы, поэтому вам нужно только переопределить то, что не пусто. Также подумайте об обработке ошибок, т. Е. Оставьте содержимое вашего обработчика блоком try-catch. –

+1

Ну, это плохая практика использования 'KeyListener' с текстовыми компонентами. Правильно ли использовать несколько слушателей на одном компоненте, как правило, да. Правильно ли использовать однопользовательские прослушиватели с компонентами, да. Хорошая практика - иметь одного большого слушателя, ИМХО, нет. Полагаю, вы хотите создать небольшие единицы работы, которые выполняют одно изолированное задание. Конечно, вы могли бы абстрагировать слушателя, который позволил бы вам повторно использовать, но наличие одного монолитного слушателя - это просто кошмар для обслуживания. – MadProgrammer

ответ

2

Ну, это плохая практика, чтобы использовать KeyListener (как правило, но особенно) с текстовыми компонентами.

  • Хорошая практика использования нескольких слушателей на одном и том же компоненте, как правило, да.
  • Хорошая практика использования однопользовательских слушателей с компонентами, да.
  • Хорошая практика иметь одного большого слушателя, ИМХО, нет. Полагаю, вы хотите создать небольшие единицы работы, которые выполняют одно изолированное задание. Конечно, вы могли бы абстрагировать слушатель, который позволит вам повторно использовать, но имеющие один монолитный слушателя просто обслуживание кошмар

Большинство интерфейсов слушателей, как правило, имеют «адаптер» класса, которые являются только бетон реализации интерфейса слушателя без каких-либо функциональных возможностей, поэтому вы можете выбрать и выбрать методы, которые вы на самом деле хотите использовать

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