OZ 2007/3
156 ORGANIZACIJA ZNANJA 2007, LETN. 12, ZV. 3 Uporabnika je treba informirati o izvajanju akcije, ki traja dalj časa. V takih primerih je zelo uporabno, da se za izvajanje akcije uporabi nova nit. Naslednje slike pri- kazujejo primere, kakšna je videti pravilno zastavljena aplikacija. Slika 9 prikazuje okno pred akcijo Fetch, ki potrebuje za svojo izvedbo dosti časa. Ko pritisnemo na tipko Fetch, se začne akcija izvajati. To zamrzne okno, kar prikazuje slika 10. V tem času uporabnik ne ve, kaj se s sistemom dogaja. V tem primeru bi bilo zelo koristno, če bi uporab- niku prikazovali potek opravljanja različnih akcij, ki se v tem času izvajajo. Zato je primerna uporaba aplikacije, ki je dovzetna za različne akcije. To lahko naredimo s pomočjo večnitnosti. Slika 11 prikazuje okno, ki uporablja večnitnost aplikaci- je Swing. Na tak način lahko dosežemo, da je uporabnik neprestano obveščen o delovanju sistema. Tako bo upo- rabnik ves čas vedel, kaj se s sistemom dogaja. V Javi 6 so ponudili razred SwingWorker, ki nam omogo- ča enostavno izgradnjo takšnega mehanizma. SwingWorker je abstrakten razred, ki ga je treba pred uporabo seveda uvesti. Pri SwingWorker<T, V> je treba definirati generična tipa <T, V>, pri čemer T predstavlja rezultat, ki ga SwingWorker vrne, V pa vmesne rezultate. Zelo pomembna metoda v SwingWorker-ju je metoda “doInBackground()”. V tej metodi je treba definirati vse akcije, ki se dogajajo v ozadju. S pomočjo metode “execute()” se zažene nit za SwingWorker. SwingWorker ravno tako zažene metodo “process()” in “done()”, s kate- rima se lahko kontrolirajo različne akcije. Primer na sliki 12 prikazuje uporabo vseh pomembnejših metod za SwingWorker. Program ne izvaja kakšnih po- membnejših funkcij, preprosto zažene kratko metodo, ki ima vlogo pri pisanju na konzolo in pisanju sporočila v Slika 9: Prikaz okna pred akcijo Fetch Slika 10: Prikaz okna po akciji Fetch po nekem času Slika 11: Prikaz okna po akciji Fetch po nekem času Slika 12: Prikaz primera programa za SwingWorker
Made with FlippingBook
RkJQdWJsaXNoZXIy MTAxMzI5