Repository navigation
Expand file tree
/
Copy pathHandDraw.java
More file actions
103 lines (103 loc) · 2.71 KB
/
Copy pathHandDraw.java
File metadata and controls
103 lines (103 loc) · 2.71 KB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.image.BufferedImage;
public class HandDraw
{
//画图区的宽度 高度
private final int AREA_WIDTH=500;
private final int AREA_HEIGHT=400;
//下面的preX、preY保存了上一次鼠标拖动事件的鼠标坐标
private int preX=-1;
private int preY=-1;
//定义一个邮件菜单哟关于设置画笔颜色
PopupMenu pop=new PopupMenu();
MenuItem redItem=new MenuItem("红色");
MenuItem greenItem=new MenuItem("绿色");
MenuItem buleItem=new MenuItem("蓝色");
//定义一个BufferedImage对象
BufferedImage image=new BufferedImage(AREA_WIDTH,AREA_HEIGHT,BufferedImage.TYPE_INT_RGB);
//获取image对象的Graphics
Graphics g=image.getGraphics();
private Frame f=new Frame("simple draw programmer");
private DrawCanvas drawArea=new DrawCanvas();
private String shape="";
//用于保存画笔的颜色
private Color foreColor=new Color(255,0,0);
public void init()
{
//定义右键菜单的事件监听器
ActionListener menuListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("green"))
{
foreColor = new Color(0 , 255 , 0);
}
if (e.getActionCommand().equals("red"))
{
foreColor = new Color(255 , 0 , 0);
}
if (e.getActionCommand().equals("bule"))
{
foreColor = new Color(0 , 0 , 255);
}
}
};
redItem.addActionListener(menuListener);
greenItem.addActionListener(menuListener);
buleItem.addActionListener(menuListener);
pop.add(redItem);
pop.add(buleItem);
pop.add(greenItem);
drawArea.add(pop);
g.fillRect(0,0,AREA_WIDTH,AREA_HEIGHT);
drawArea.setPreferredSize(new Dimension(AREA_WIDTH,AREA_HEIGHT));
//监听手表移动动作
drawArea.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
if(preX >0&&preY>0)
{
//设置当前颜色
g.setColor(foreColor);
//绘制从上一次鼠标拖动事件点到本次鼠标拖动事件点的线段
g.drawLine(preX,preY,e.getX(),e.getY());
}
preX=e.getX();
preY=e.getY();
//绘制drawArea对象
drawArea.repaint();
}
});
drawArea.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
pop.show(drawArea,e.getX(),e.getY());
}
preX=-1;
preY=-1;
}
});
f.add(drawArea);
f.pack();
f.setVisible(true);
}
public static void main(String[] args)
{
new HandDraw().init();
}
class DrawCanvas extends Canvas
{
//重写Canvas的paint方法,实现绘图
public void paint(Graphics g)
{
g.drawImage(image,0,0,null);
}
}
}