1 / 6

Objektno orijentisano programiranje vežbe – čas 13

Objektno orijentisano programiranje vežbe – čas 13. Biljana Stojanović. Obrada događaja - NAPOMENE. Sav kod za obradu dogadjaja izvršava se u istoj niti koju možemo nazvati nit za obradu događaja.

shea
Download Presentation

Objektno orijentisano programiranje vežbe – čas 13

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektno orijentisano programiranjevežbe – čas 13 Biljana Stojanović

  2. Obrada događaja - NAPOMENE • Sav kod za obradu dogadjaja izvršava se u istoj niti koju možemo nazvati nit za obradu događaja. • Metod main() kojim se startuje aplikacija se izvršava u posebnoj niti i to je glavna nit za aplikaciju. • Dok se izvršava kod za obradu jednog događaja, ostali događaji ne mogu biti obrađeni. • Kod za obradu narednog događaja počinje da se izvršava tek kada se završi obrada tekućeg događaja. • Dakle, interakcija korisnika i programa u velikoj meri zavisi od vremena potrebnog za obradu događaja. Biljana Stojanović

  3. Obrada događaja – NAPOMENE (nastavak) • Zbog činjenice da se obrada događaja vrši u jednoj niti koja je odvojena od niti u kojoj se izvršava metod main(), nakon što je GUI neke aplikacije prikazan, ne sme se vršiti njegova modifikacija. U suprotnom, može doći do deadlock-a. Biljana Stojanović

  4. Obrada događaja – NAPOMENE (nastavak) • Da bi se izbegla pojava deadlock-a u aplikaciji, neophodno je ceo kod kojim se kreira GUI smestiti u nit za obradu događaja. • U te svrhe koristi se statički metod invokeLater() iz klase javax.swing.Utilities kojim se na jednostavan način kreira GUI unutar niti za događaje. • invokeLater() izvršava run() metod za objekat koji je prosleđen kao argument (objekat anonimne klase koja implementira interfejs Runnable) u okviru niti za obradu događaja nakon što su procesirani svi događaji koji su čekali. Biljana Stojanović

  5. Obrada događaja – NAPOMENE (nastavak) • Metod run() iz interfejsa Runnable se inače poziva kada se objekat izvršava u novoj niti. • U našem slučaju, run() poziva statički metod kreirajGUI() koji kreira prozor i njegove komponente, tako da se ceo taj kod sada izvršava u niti za obradu događaja. • U prethodnoj varijanti gde nije korišćen metod invokeLater(), kreiranje prozora i njegovih komponenti se vršilo u glavnoj niti, pa je postojala mogućnost nastanka deadlock-a glavne niti i niti za obradu događaja. Biljana Stojanović

  6. Obrada dogadjaja – NAPOMENE (nastavak) • Isti princip koristi se i pri radu sa apletima. • Metod init() će biti oblika: • public void init() { SwingUtilities.invokeLater ( new Runnable() { public void run() { kreirajGUI(); } }); } Metod kreirajGUI() kreira sadržaj apleta. BiljanaStojanović

More Related