GUI - događaji (Events) i izuzeci. Bojan Tomić

Similar documents
Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Programiranje III razred

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Uvod u relacione baze podataka

Programski jezici. leto

Izrada VI laboratorijske vježbe

VRIJEDNOSTI ATRIBUTA

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

VHDLPrimeri Poglavlje5.doc

Vežbe - XII nedelja PHP Doc

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

PARALELNO PROGRAMIRANJE

VB komande. Programiranje 1

Kodiranje GUI aplikacija u Visual C#

Uputstvo za podešavanje mail klijenta

Programiranje III razred

Uputstvo za korišćenje logrotate funkcije

Iskočni okviri (eng. popup boxes)

Internet programiranje

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

Numerical Computation

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Zadatci Small Basic za 7. Razred ( programa)

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Računarske osnove Interneta (SI3ROI, IR4ROI)

PROGRAMIRANJE. Amir Hajdar

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Java IMI PMF KG OOP 09 AKM. Izuzeci

KONTROLE IZBORA_- Kontrola ListBox

Modbus TCP i dva PLC S7 1200

Teorijske vežbe 9. Objektno-orjentisano programiranje

x y = z Zadaci - procedure

2. Programiranje (rad) u mreži

2. Linijska algoritamska struktura

Programabilni logički kontroleri PLC

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Prva recenica. Druga recenica.

Programiranje u realnom vremenu Bojan Furlan

Aspektno programiranje u Javi. AOP + AspectJ

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Objektno orijentisano programiranje 2. Grafički korisnički interfejs

operativni sistem part 2

Upute za postavljanje Outlook Expressa

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

modifier returnvaluetype methodname(list of parameters) { // Method body; }

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

Projektovanje Namenskih Računarskih Struktura 1. Sistemi zasnovani na Androidu

Sberbank Business Online na Mozilla FireFox

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

VDSL modem Zyxel VMG1312-B10A/B30A

Jezik Baze Podataka SQL. Jennifer Widom

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

12. Uskladištene procedure (Stored Procedures)

NOVI SAD. Primenjeno programiranje Java i NetBeans IDE 7.0 vežbe

PVC Eco. Eco Prozori i Balkonska Vrata Bela Boja Dezeni drveta su 40% skuplji

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programski jezik JAVA PREDAVANJE

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ URL: nikola.milikic.info

Obrada transakcija u ADO.NET-u

Programski jezik JAVA PREDAVANJE 5

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

11. Iznimke i tokovi (exceptions and streams)

DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA

VEŽBA 5 do while petlja, switch case

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

VEŽBA 3: WINDOWS KONTROLE U C#

... ; ako je a n parno. ; ako je a n neparno

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

16. Sigurnije programiranje

Upute za VDSL modem BiPAC 8700VNXL R3

import java.applet.applet; import java.applet.audioclip; import java.net.url; public class Vjesala2 {

Računarska grafika. JavaFX - interakcija

Predmet: Interakcija čovek računar. Tema: Programiranje mobilnih Android aplikacija

NIZOVI.

Marko Milošević.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

OBJEKTNO ORIJENTISANO

Programske paradigme Funkcionalna paradigma

Predavanje Projektovanje softvera - Niti. Sadržaj:

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Lekcija 4. Java programiranje sa bazama podataka. dr Svetlana Cvetanović

Informacioni sistemi i baze podataka

Delivery to the following recipient failed permanently:

Računarske mreže treći razred

Transcription:

GUI - događaji (Events) i izuzeci Bojan Tomić

Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša i tastature) Svaka GUI komponenta reaguje na određene događaje Postoje dve vrste događaja: Primitivni događaji (low-level events) Semantički događaji (semantic events)

Događaji Primitivni događaji su direktno vezani za neku komunikaciju preko perifernog uređaja ili jednostavnu promenu nad komponentom, npr.: mouseclicked - kada korisnik klikne mišem na komponentu mousepressed - kada korisnik klikne mišem ali ne pusti dugme mousereleased - kad korisnik pusti dugme posle klika keypressed - kada korisnik pritisne neki taster na tastaturi a komponenta je u fokusu key Released - kada korisnik pusti dugme

Događaji Semantički događaji predstavljaju neke uopštene događaje bez obzira na to da li su nastali kao posledica aktivacije nekim perifernim uređajem ili na drugi način U principu, često se koristi samo jedan semantički događaj - «actionperformed» On predstavlja akciju neke komponente bez obzira na to da li je izazvana mišem, tastaturom... Korišćenjem semantičkih događaja kod je robustniji

Događaji Svaka komponenta može da reaguje na događaje Da bi to mogla, komponenti se dodaju tzv. osluškivači («action listener») - objekti odgovarajuće klase U osluškivač se dodaju metode koje se aktiviraju kada se neki događaj desi Ove metode se nazivaju «event handlers»

Događaji Svaka komponenta može da ima nula, jednu ili više osluškivača i metoda koje reaguju na događaje Kada se desi događaj, izvršiće se kod u okviru tela odgovarajuće «event handler» metode

Događaji Kod jednog «event handler» a za dugme koji reaguje na «actionperformed» događaj izgleda ovako: jbutton.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent e) { //Neki kod koji se izvrsava svaki put kada se //klikne na ovo dugme } });

Unos podataka preko GUI-ja Svi podaci koji se unesu su u tekstualnoj formi JTextField gettext metoda JTextArea gettext metoda Potrebno je pretvoriti podatke u odgovarajući tip Double.parseDouble(String s) Integer.parseInt(String s)

Izuzeci i GUI Kada se baci izuzetak u Java programu koji nema GUI Program se prekida Poruka izuzetka se prikazuje na standardnom izlazu To NIJE slučaj kod GUI aplikacija Program se ne prekida - samo se prekine izvršavanje metode koja je bacila izuzetak i onih metoda koje su je pozvale, ali program može da nastavi da radi Ne prikazuje se poruka izuzetka jer se standardni izlaz ne vidi preko GUI forme

Izuzeci i GUI Niti procesi koji konkuretno rade na jednom procesoru Izuzetak prekida jednu nit U GUI programu rade makar dve, tri niti Nit koja predstavlja main metodu (Initial thread) EventDispatch nit koja omogućava reagovanje GUI-ja na događaje Radne niti (Worker thread) Kad se desi izuzetak, prekida se samo EventDispatch nit, ali se odmah napravi nova i program nastavlja da radi

Izuzeci i GUI Initial thread Pokretanje programa iz main metode i to je to (EventQueue) EventDispatch Registruje sve događaje i stavlja ih na EventQueue Izvršava sve event handler metode (ako se izvršavaju brzo) Worker thread Programer ih definiše i aktiviraju se da urade deo posla kad je taj posao spor ili drugo traje

Izuzeci i GUI Ako se izuzetak ne obradi, neće se ni primetiti da se išta desilo Rešenje Uhvatiti svaki izuzetak (try-catch blok) Prikazati poruku izuzetka u okviru neke komponente GUI forme Jedna varijanta je da se napravi posebna forma koja će da služi samo za to Druga varijanta je da se iskoristi JOptionPane klasa

Izuzeci i GUI Klasa javax.swing.joptionpane Polu-gotova forma koja služi za brzi prikaz poruka, opomena isl. statička metoda showmessagedialog() jbutton.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent e) { }}); try{ double dinari = Double.parseDouble(jTextField.getText()); double evri = dinari / 85; jtextfield1.settext(evri+" evra"); }catch (Exception exc){ JOptionPane.showMessageDialog(jButton, "Morate uneti broj", "Greska", JOptionPane.ERROR_MESSAGE); }