1 / 17

proleće/leto 2009

Programski jezici. proleće/leto 2009. Grafičko programiranje. Programiranje grafičkih programa se zasniva na događajima Grafički program reaguje na razne vrste događaja Događaji se dešavaju u nepredvidljivim trenucima i po nepredvidljivom redosledu. Grafičko programiranje.

fathi
Download Presentation

proleće/leto 2009

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. Programski jezici proleće/leto 2009

  2. Grafičko programiranje • Programiranje grafičkih programa se zasniva na događajima • Grafički program reaguje na razne vrste događaja • Događaji se dešavaju u nepredvidljivim trenucima i po nepredvidljivom redosledu Programski jezici

  3. Grafičko programiranje • Događaji su predstavljeni objektima klasa koje su naslednice EventObject • Događaji su razvrstani prema tipu događaja: ActionEvent MouseEvent WindowEvent KeyEvent . . . Programski jezici

  4. Grafičko programiranje • Mehanizam rukovanja događajima • Komponenta u kojoj se događaj desio je izvor događaja • Kada se desi događaj, JVM konstruiše objekat koji opisuje nastali događaj • Konstruisani objekat događaja se prenosi tačno određenom metodu rukovaoca događaja i taj metod se poziva radi obrade događaja Programski jezici

  5. Grafičko programiranje • Rukovalac događaja mora biti objekat klase koja implementira specijalni interfejs • Rukovalac događaja se mora eksplicitno pridružiti komponenti koja je potencijalni izvor događaja Programski jezici

  6. Grafičko programiranje • Tipovi događaja koje generišu komponente (izvori događaja) Tip događaja Dodeljeni interfejs rukovaoca ActionEvent ActionListener MouseEvent MouseListener WindowEvent WindowListener KeyEvent KeyListener FocusEvent FocusListener ItemEvent ItemListener TextEvent TextListener ComponentEvent ComponentListener ContainerEvent ContainerListener . . . . . . Programski jezici

  7. Grafičko programiranje • Rukovalac događaja implementira odgovarajući XxxxListener interfejs • Rukovalac događaja se dodaje komponenti metodom addXxxxListener() • U rukovaocu događaja se izvršava tačno određeni metod koji obrađuje događaj Programski jezici

  8. Grafičko programiranje • Primer: akcijski događaj (action event) za pritisak na dugme tasterom miša (i izbor iz menija) • akcijski događaj se obrađuje pomoću ActionListener objekta • ActionListener objekat mora imati metod actionPerformed() • Taj metod se automatski poziva kada se desi akcijski događaj Programski jezici

  9. Grafičko programiranje • Format klase RD koja predstavlja rukovaoca događaja i služi za konstruisanje ActionListener objekta: public class RD implements ActionListener { ... public void actionPerformed(ActionEvent e) { // naredbe koje obrađuju događaj // pritiska tasterom miša na dugme } } Programski jezici

  10. Grafičko programiranje • Rukovalac događaja za pritisak tasterom miša na dugme mora biti objekat klase koja implementira interfejs ActionListener • To obezbeđuje da rukovalac događaja za pritisak tasterom miša na dugme ima metod koji se poziva kada se desi događaj pritiska na dugme Programski jezici

  11. Grafičko programiranje • Primer: brojanje pritisaka tasterom miša na dugme Programski jezici

  12. Grafičko programiranje import java.awt.*; import javax.swing.*; import java.awt.event.*; // Početna klasa public class TestDugmeBrojač { public static void main(String[] args) { DugmeBrojačOkvir okvir = new DugmeBrojačOkvir(); okvir.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); okvir.setVisible(true); } } Programski jezici

  13. Grafičko programiranje // Okvir sa dugmetom i prikazom broja pritisakadugmeta public class DugmeBrojačOkvir extends JFrame { private JLabel oznaka; //prikaz broja pritisakadugmeta // Unutrašnja klasa rukovaoca akcijskog događaja private class RukovalacDugmeta implements ActionListener { private int brojač; // brojač pritisaka dugmeta public void actionPerformed(ActionEvent e) { brojač++; oznaka.setText("Broj pritisaka = " + brojač); } } Programski jezici

  14. Grafičko programiranje // Konstruktor public DugmeBrojačOkvir() { setTitle("Brojanje pritisaka na dugme "); setSize(300, 150); setLayout(new FlowLayout(FlowLayout.CENTER,30,20)); oznaka = new JLabel("Broj pritisaka = 0"); add(oznaka); JButton dugme = new JButton("Pritisni me"); add(dugme); dugme.addActionListener(new RukovalacDugmeta()); } } Programski jezici

  15. Grafičko programiranje • Adapterske klase • Nisu svi tipovi događaja tako jednostavni za obradu kao pritisak tasterom miša na dugme • Primer: okvir tipa JFrame je izvor događaja tipa WindowEvent public interface WindowListener { public void windowOpened(WindowEvent e); public void windowClosing(WindowEvent e); public void windowClosed(WindowEvent e); public void windowIconified(WindowEvent e); public void windowDeiconified(WindowEvent e); public void windowActivated(WindowEvent e); public void windowDeactivated(WindowEvent e); } Programski jezici

  16. Grafičko programiranje • Primer: odustajanje od zatvaranja okvira public class ZatvaračOkvira implements WindowListener { public void windowClosing(WindowEvent e) { if (korisnik se slaže) System.exit(0); } public void windowOpened(WindowEvent e) {} public void windowClosed(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} } Programski jezici

  17. Grafičko programiranje • Adapterska klasa formalno implementira interfejs tako što su svi metodi interfejsa trivijalno definisani public class ZatvaračOkvira extends WindowAdapter { public void windowClosing(WindowEvent e) { if (korisnik se slaže) System.exit(0); } } okvir.addWindowListener(new ZatvaračOkvira()); Programski jezici

More Related