Cieľom cvičenia je porozumieť problematike zachytávania udalostí v jave, t.j. problematike Listener-ov. Podľa java dokumentácie poznáme 39 interface-ov typu Listener. Na prednáške č.7 sme prebrali len niektoré (ActionListener, WindowListener, KeyListener, MouseListener a MouseMotionListener ). Pre zaujímavosť, zoznam všetkých 39 Listener-ov aj s príslušnými obslužnými metódami môžete nájsť tu:
https://docs.oracle.com/javase/tutorial/uiswing/events/api.html
Vyskúšajte si príklad na funkčné overenie ActionListener-a. Súbor TestEvent3a.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import java.awt.*; import java.awt.event.*; class TestFrame extends Frame implements ActionListener { String close="Close"; Button b; public TestFrame () { super("Test Frame"); setSize(300,300); Panel p=new Panel(); // Panel pre Button b=new Button(close); b.addActionListener(this); // Sam je Event-Listener p.add(b); // Button in Panel add(p); // Panel v Okne setVisible(true); } public void actionPerformed (ActionEvent e) { if (e.getSource() == b) { dispose(); System.exit(0); // Koniec } } } public class TestEvent3a { public static void main (String args[]) { new TestFrame(); } } |
Modifikujte kód z predchádzajúcej úlohy tak, že pridáte ďalšie 2 tlačidlá za účelom (dokopy ich budú tri). Každé tlačidlo bude musieť vykonať inú „akcie“. Napr. každé tlačidlo vypíše do konzoly iný text a tretie vypíše a zároveň zatvorí okno a ukončí program.
Vyskúšajte si príklad na funkčné overenie KeyListener-a. Súbor TestKey.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.awt.*; import java.awt.event.*; class TestCanvas extends Canvas implements KeyListener { public TestCanvas () { addKeyListener (this); } // Methody pre KeyListener: public void keyPressed (KeyEvent e) { if (e.isActionKey()) System.out.println("keyPressed zavolane - Action-Key : "+e.getKeyCode()); } public void keyReleased (KeyEvent e) { System.out.println("keyReleased zavolane - Released code: " +e.getKeyCode()+ "\n"); } public void keyTyped (KeyEvent e) { System.out.println("keyTyped zavolane - Character : "+e.getKeyChar()); } } public class TestKey { public static void main (String args[]) { Frame f=new Frame(); f.add(new TestCanvas()); f.setSize(300,300); f.setVisible(true); } } |
Modifikujte kód z predchádzajúcej úlohy tak, že pridáte ďalšie 2 tlačidlá za účelom (dokopy ich budú tri). Každé tlačidlo bude musieť vykonať inú „akcie“. Napr. každé tlačidlo vypíše do konzoly iný text a tretie vypíše a zároveň zatvorí okno a ukončí program.
Modifikujte kód z predchádzajúcej úlohy tak, aby vaša aplikácia dokázala reagovať na stlačenie dvoj-kombinácie kláves, napr. Ctrl+S alebo Alt+S.
Vyskúšajte si príklad na funkčné overenie MouseListener-a a MouseMotionListener-a. Súbor TestMouse.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import java.awt.*; import java.awt.event.*; class TestCanvas extends Canvas implements MouseListener, MouseMotionListener { public TestCanvas () { addMouseListener (this); addMouseMotionListener(this); } // Metody MouseListener public void mousePressed (MouseEvent e) { System.out.println(e); } public void mouseReleased (MouseEvent e) { System.out.println(e); } public void mouseClicked(MouseEvent e) { System.out.println(e); System.out.println( "Mauseklicked na suradnice "+e.getX()+","+e.getY()); } public void mouseEntered (MouseEvent e) { System.out.println(e); } public void mouseExited (MouseEvent e) { System.out.println(e); } public void mouseMoved (MouseEvent e) { System.out.println("hybem sa"); } public void mouseDragged (MouseEvent e) { System.out.println("som stlaceny a sa hybem"); } } public class TestMouse { public static void main (String args[]) { Frame f=new Frame(); f.add(new TestCanvas()); f.setSize(300,300); f.setVisible(true); } } |
Modifikujte kód z predchádzajúcej úlohy tak, aby vaša aplikácia dokázala reagovať na kliknutie ľavého tlačidla myši a vedela vypísať do konzoly súradnicu x, y kliku.
Naprogramujte oknovú aplikáciu, ktorá obsahuje Canvas s bielim pozadím. Stlačením tlačidla myši sa nakreslí na dané x, y súradnice geometrický tvar, napr. kružnica s pevne nastaveným polomerom (pre jednoduchosť).