Date post: | 04-Jan-2016 |
Category: |
Documents |
Upload: | kelly-robbins |
View: | 213 times |
Download: | 0 times |
Definition: An event is an object thrown in response to a user of programmatic action
Definition: A listener is a series of methods that executes in response to an events
Definition: An adapter is a class that has default listener methods
Implementation: Implement the listener interface or extend an adapter
class Create listener methods appropriately Register the listener to a component or a listener manager
Note: An alternate implementation is to create an anonymous listener object passed as an argument when registering.
Listen for button clicks
public class MyPanel extends JPanel implements ActionListener
{ Jbutton b; public MyPanel() { JButton b = new JButton(“hello”); add(b);
b.addActionListener(this); }
public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof JButton) { JButton x = (JButton)(e.getSource());
System.out.println (“it’s a ” + x.getText() + “ button”); } }
}Note: A single listener can repond to events from multiple objects
Purpose Listen for user keyboard entries Limitation: the component must have focus
Implementation Create keyPressed, keyTyped, and keyReleased
methods if using the implements KeyListener interface
Create only the methods needed if using a KeyAdapter
Register the listener with the component
class KeyPanel extends JPanel
{ private int x=100, y=100; String keyChar = ‘x';
public KeyPanel()
{ setFocusable(true); // Doesn’t work for JApplets
addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN: y+=10; break;
case KeyEvent.VK_UP: y-=10; break;
case KeyEvent.VK_LEFT: x-=10; break;
case KeyEvent.VK_RIGHT: x+=10; break;
default: keyChar = “” + e.getKeyChar(); }
repaint(); }});
}
public void paintComponent(Graphics g) { super.paintComponent(g); g.drawString(keyChar,x,y);}}
Differences from KeyListener objects Don’t need to worry about whether a component has focus Monitors keyboard events before they are sent to components
with focus The listener method is dispatchKeyEvent, not keyPressed Register the Listener with the system KeyboardFocusManager Useful for applets, because applet JPanels won’t get focus
Implementation
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.addKeyEventDispatcher(new KeyEventDispatcher() { public boolean dispatchKeyEvent(KeyEvent event) { /* code goes here; return true; } });
Mouse Listener Events: Mouse operations public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseClicked(MouseEvent e) {}
Mouse Motion Listener: Movements of the mouse public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) {}
Item Listener: State of an object changed Public void itemStateChanged(ItemEvent e) {}
Even more: FocusListener, WindowListener, etc.
Definition: A path of execution through a process
Any Class can be a thread if it: implements runnable provides a run method (public void run()) A thread starts by calling start(), which in turn calls
run() A thread ends when the run method exits
Be careful Threads all run concurrently; order of execution is
not known One thread can step on variables set in another
thread
public class MovingPanel extends JPanel implements ActionListener
{ private String message = “Welcome to Java” private int x=0, y = 20; public MovingPanel() {Timer timer=new Timer(1000,this); timer.start(); }
public void paintComponent(Graphics g){ super.paintComponent(g); g.drawString(message, x, y);}
public void actionPerformed(ActionEvent e){ if (x>getWidth() { x = -20; } x+=5; if (y>=getHeight() – 20) y = 20; y+=5; repaint();}
int data[][] = new int[4][4], count = 1;for (int row=0; row<data.length; row++)
for (int col=0; col<data[row].length; col++) data[row][col] = count++;
ORint[][] data = {{1,2,3,4}, {5,6,7,8},
{9,10,11,12}, {13,14,15,16} };
for (int row=0; row<data.length; row++){ for (int col=0; col<data[row].length; col++)
System.out.printf("%4d", data[row][col]); System.out.println();}
[ [0]
[1]
[2]
[3]
[0]
1 2 3 4
[1]
5 6 7 8
[2]
9 10 11 12
[3]
13
14 15 16
count=1;int values[][] = new int[4][], cols[] = {2, 4, 1,3}, count = 1;
for (int row=0; row<values.length; row++){ values[row] = new int[cols[row]]; for (int col=0; col<values[row].length; col++) values[row][col] = count++;}
for (int row=0; row<values.length; row++){ for (int col=0; col<values[row].length; col++) System.out.printf("%4d", values[row][col]);
System.out.println();}
Definition: Different rows have different numbers of columnt
public double distance(Point first, Point second){ double delta1 = Math.pow(first.x – second.x, 2); double delta2 = Math.pow(first.y – second.y), 2; return Math.sqrt(delta1 + delta2); }Consider a two dimensional array, dataProblem: Find the pair of points closest together using the above method.
Moving sprites in four dimensions int[][] directions = { {0,1}, {1,0}, {0,-1}, {-1,0}};
Moving sprites in eight directions int[][] directions =
{ {0,2}, {1,1}, {2,0}, {1,-1}, {0,-2}, {-1, -1}, {0,-2}, { -1,1} };
Moving sprites in sixteen directions int[][] directions =
{ { 4, 0}, { 3, 1}, { 2, 2}, { 1, 3}, { 0, 4}, {-1, 3}, {-2, 2}, {-3, 1}, {-4, 0}, {-3,-1}, {-2,-2}, {-1,-3}, { 0,-4}, { 1,-3}, { 2,-2}, { 3,-1} };
Questions: What is the relation between the directions and the one that is
half away in the array? How would we extend this to twice the size?
Divide the panel into row and column cells. Define rules for what happens if predators or
avatars intersect the various cells Examples of possible game rules
Move them automatically to another place Have the game shift to another room Give the players points or create additional avatars Kill the avatar that hits that particular cells The rules for avatars may vary from that of
predators
First dimension: month Second dimension: day Third dimension: hour Fourth dimension : Type of measurement
[0] = temperature, [1] = humidity Symbolic constants: public final static int T=0, H=1; Questions:
To what does the following refer?int x=3, y=4, z=5, k=32, m=50;data[x][y][z][T] = 32;data[x][y][z][H] = 50;
How do we instantiate such an array?