三、综合应用题
本题的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向键也会向对应的方向缓慢地绘制直线,如果按下键的话,绘制直线的速度会加快。
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class java3{
public static void main(String[]args)
{
SketchFrame frame=new SketchFrame();
frame.setDefauhCloseOperation(JFrame.EXIT_
ON_CLOSE);
frame.show();
}
}
class SketchFrame extends JFrame
{
public SketchFrame()
{
setTitle("java3");
setSize(DEFAULT WIDTH, DEFAULT
HEIGHT);
SketehPanel panel=new SketchPanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT
=200;
}
class SketehPanel extends JPanel
{
public void sketchPanel()
{
last=new Point2D.Double(100,100);
lines=new ArrayList();
KeyHandler listener=new KeyHandler();
addkeyListener(this);
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 92.draw((Line2D)lines.get(i));
}
private Point2D last:
private ArrayList lines;
private static final int SMALL_INCREMENT
=1:
private static final int LARGE_INCREMENT
=5;
private class KeyHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
KEY keyCode=event.getKeyCode();
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(Character.isUpperCase(keyChar))
{
d=LARGE_INCREMENT;
keyChar=Character.toLowerCase(keyChar);
}
else
d=SMALL_INCREMENT;
}
}
}
相关推荐:北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |