三、綜合應用題
本題的功能是用鍵盤上的方向鍵來控制直線的繪制方向。如果一直按向上的方向鍵,則在窗口中從焦點開始向上緩慢繪制直線,按其他方向鍵也會向對應的方向緩慢地繪制直線,如果按下鍵的話,繪制直線的速度會加快。
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;
}
}
}
相關推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |