bswierczynski napisał(a)
@mgs_saladin:
To nie takie proste. W jaki sposób proponowane przez Ciebie wywołanie ma oznaczać wciśnięcie klawisza Enter?
Rozumiem, że autorowi chodzi o dokładnie zasymulowanie tego zdarzenia. Czyli chodzi nie tylko o odpalenie obiektów nasłuchujących dla (dowolnych) akcji, ale i przekazanie im odpowiedniego obiektu ActionEvent?
Funkcje przetwarzające akcje mogą używać tego argumentu, by wykonać różne kawałki kodu w zależności od rodzaju akcji.
Dodatkowo, pole może mieć wiele obiektów nasłuchujących i odpalenie pojedynczego fl.actionPerformed nie odpali naturalnie pozostałych.
Nie jest to więc coś, czego chciał autor tematu (a przynajmniej napisał, że chciał).
Dokladnie tak jak piszesz. Rozwine troche moja mysl.
Przykladowo obiektow JTextField bedziemy mieli kilka, a w funkcji actionPerformed chcemy odwolac sie do konkretnego obiektu, w ktorym nastapilo zdarzenie poprzez konstrukcje
((JTextField)e.getSource()).getText()
Na dodatek zdarzeniem ktore ma miec miejsce jest wlasnie wcisniecie klawisze Enter, a nie dowolna akcja.
edit
:: napisał(a)
Mozesz zrobic podklase JTextField, i za jej pomoca wystawic metode JTextField.fireActionPerformed() ktora jest protected, i pozniej samemu wywolywac ta metode w momencie gdy sie chce zasymulowac. Zagwarantowane jest wtedy ze tak jak mowi pan Swierczynski zostana powiadomione wszystkie listenery.
Tylko nie rozumiem w czym problem - wcisniecie klawisza enter w JTextField samo w sobie generuje ActionEvent, czy sie myle?
Spodziewalem sie wlasnie takiej gotowej metody w klasie JTextField. Cos na wzor tego:
pole.symulujZdarzenie(rodzajZdarzenia);