public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200;
class SketchPanel extends JPanel
______;
last = new Point2D.Double(100,100); lines = new ArrayList(); KeyHandler listener = new KeyHandler(); ______; setFocusable(true);
public void add(int dx,int dy)
Point2D end = new Point2D.Double(last.getX()+ dx,last.getY() + dy); Line2D line = new Line2D.Double(last,end); lines.add(line); repaint(); last = end;
public void paintComponent(Graphics g)
super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; for (int i = 0; i < lines.size(); i++) g2 .draw ((Line2D) lines .get (i));
private Point2D last; private ArrayList lines; private static final int SMALL INCREMENT = i; private static final int LARGE_INCREMENT = 5; private class KeyHandler implements KeyListener
public void keyPressed(KeyEvent event)
______; int d; if (event.isShiftDown()) d = LARGE_INCREMENT; else d = SMALL_INCREMENT; if(keyCode == KeyEvent.VK_LEFT) add(-d,0); else if(keyCode == KeyEvent.VK_RIGHT) add(d,0); else if(keyCode == KeyEvent.VK_UP) add(0,-d); else if(keyCode == KeyEvent.VK DOWN) add(0,d);
public void keyReleased(KeyEvent event)
public void keyTyped(KeyEvent event)
char keyChar = event.getKeyChar(); int d; if (Charaeter.isUpperCase(keyChar))
d = LARGE_INCREMENT; keyChar = Character.toLowerCase(keyChar);
else d = SMALL_INCREMENT;
【参考答案】
public SketchPanel()。 addKeyListener(listener)。 in......