2012-04-29 2 views
0

В моей программе я хотел вызвать ActionEvent на TextField с именем descField, когда фокус утерян. Я успешно использовал dispatchEvent. Когда я изменил TextField на JTextField, он не работает. Я был бы благодарен за помощь (я любитель с Java). Вот диспетчер, который является focusLost метода моего JTextField:JTextField dispatchEvent не работает, но работает для TextField

public void focusLost(FocusEvent f) { 
     ActionEvent action = new ActionEvent(descField, ActionEvent.ACTION_PERFORMED, "focus_lost"); 
     descField.dispatchEvent(action); // Causes actionPerformed to be invoked 
     // Does not work with JTextArea 
    } //focusLost 

Как я могу заставить его работать, используя JTextField, вместо TextField?

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). * «Буду признателен за помощь» * Буду благодарен за вопрос. Какой у Вас вопрос? –

+0

Извините, Андрей, я не знаю, что такое SSCCE, и это мой первый вопрос. Вопрос в том, как я могу заставить его работать с использованием JTextField вместо TextField? – user1364337

+0

* «Я не знаю, что такое SSCCE ..» * Вот почему я связался с документом, который его объясняет. –

ответ

0

Я поместил код в ActionEvent в отдельный метод в этом классе слушателя и просто вызовет его как из методов actionPerformed, так и из метода focusLost. Теперь отлично работает с JTextField. Я думаю, что большинство людей все равно это сделают. Код ActionPerformed был довольно длинным.