1、Java版本简单的手绘程序,点击右键可以选择颜色,对初学Java的同学还是很有帮助!学会做这个,下一步就可以做出一个简单的Windows版本的画图!
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<code>package</code> <code>project;</code>
<code>import</code> <code>java.awt.Canvas;</code>
<code>import</code> <code>java.awt.Color;</code>
<code>import</code> <code>java.awt.Dimension;</code>
<code>import</code> <code>java.awt.Frame;</code>
<code>import</code> <code>java.awt.Graphics;</code>
<code>import</code> <code>java.awt.MenuItem;</code>
<code>import</code> <code>java.awt.PopupMenu;</code>
<code>import</code> <code>java.awt.event.ActionEvent;</code>
<code>import</code> <code>java.awt.event.ActionListener;</code>
<code>import</code> <code>java.awt.event.MouseAdapter;</code>
<code>import</code> <code>java.awt.event.MouseEvent;</code>
<code>import</code> <code>java.awt.event.MouseMotionAdapter;</code>
<code>import</code> <code>java.awt.event.WindowAdapter;</code>
<code>import</code> <code>java.awt.event.WindowEvent;</code>
<code>import</code> <code>java.awt.image.BufferedImage;</code>
<code>/**</code>
<code> </code><code>*</code>
<code> </code><code>*@author huyongjian Oracle(Compus Solution Group)</code>
<code> </code><code>* @Date 2013-8-18</code>
<code> </code><code>* @version 2.0</code>
<code> </code><code>* @since JDK1.6(建议)</code>
<code> </code><code>Copy Right Information COMPUS SOLUTION GROUP</code>
<code> </code><code>IDE:Eclipse</code>
<code> </code><code>class:</code>
<code> </code><code>绘制图像01</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>HandDraw {</code>
<code> </code><code>//画图去的宽度</code>
<code> </code><code>private</code> <code>final</code> <code>int</code> <code>AREA_WIDTH=</code><code>500</code><code>;</code>
<code> </code><code>//画图去的高度</code>
<code> </code><code>private</code> <code>final</code> <code>int</code> <code>AREA_HEIGHT=</code><code>400</code><code>;</code>
<code> </code><code>//下面的prex、prey保存了上一次鼠标拖动事件的鼠标坐标</code>
<code> </code><code>private</code> <code>int</code> <code>preX=-</code><code>1</code><code>;</code>
<code> </code><code>private</code> <code>int</code> <code>preY=-</code><code>1</code><code>;</code>
<code> </code><code>//定义一个右键菜单用于设置画笔颜色</code>
<code> </code><code>PopupMenu pop=</code><code>new</code> <code>PopupMenu();</code>
<code> </code><code>MenuItem redItem=</code><code>new</code> <code>MenuItem(</code><code>"红色"</code><code>);</code>
<code> </code><code>MenuItem greenItem=</code><code>new</code> <code>MenuItem(</code><code>"绿色"</code><code>);</code>
<code> </code><code>MenuItem blueItem=</code><code>new</code> <code>MenuItem(</code><code>"蓝色"</code><code>);</code>
<code> </code><code>MenuItem blackItem=</code><code>new</code> <code>MenuItem(</code><code>"黑色"</code><code>);</code>
<code> </code><code>//定义一个BufferedImage对象</code>
<code> </code><code>BufferedImage image=</code><code>new</code> <code>BufferedImage(AREA_WIDTH,AREA_HEIGHT,</code>
<code> </code><code>BufferedImage.TYPE_INT_RGB</code>
<code> </code><code>);</code>
<code> </code><code>//获取image对象的Graphics</code>
<code> </code><code>Graphics g=image.getGraphics();</code>
<code> </code><code>private</code> <code>Frame f=</code><code>new</code> <code>Frame(</code><code>"简单手绘程序"</code><code>);</code>
<code> </code><code>private</code> <code>DrawCanvas drawArea=</code><code>new</code> <code>DrawCanvas();</code>
<code> </code><code>//用于保存需要绘制什么图形的字符串属性</code>
<code> </code><code>private</code> <code>String shape=</code><code>""</code><code>;</code>
<code> </code><code>//用于保存画笔颜色</code>
<code> </code><code>private</code> <code>Color foreColor=</code><code>new</code> <code>Color(</code><code>255</code><code>,</code><code>0</code><code>,</code><code>0</code><code>);</code>
<code> </code><code>public</code> <code>void</code> <code>init(){</code>
<code> </code><code>ActionListener menuListener=</code><code>new</code> <code>ActionListener(){</code>
<code> </code><code>public</code> <code>void</code> <code>actionPerformed(ActionEvent e){</code>
<code> </code><code>if</code><code>(e.getActionCommand().equals(</code><code>"绿色"</code><code>)){</code>
<code> </code><code>foreColor=</code><code>new</code> <code>Color(</code><code>0</code><code>,</code><code>255</code><code>,</code><code>0</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(e.getActionCommand().equals(</code><code>"红色"</code><code>)){</code>
<code> </code><code>foreColor=</code><code>new</code> <code>Color(</code><code>255</code><code>,</code><code>0</code><code>,</code><code>0</code><code>);</code>
<code> </code><code>if</code><code>(e.getActionCommand().equals(</code><code>"蓝色"</code><code>)){</code>
<code> </code><code>foreColor=</code><code>new</code> <code>Color(</code><code>0</code><code>,</code><code>0</code><code>,</code><code>255</code><code>);</code>
<code> </code><code>if</code><code>(e.getActionCommand().equals(</code><code>"黑色"</code><code>)){</code>
<code> </code><code>foreColor=</code><code>new</code> <code>Color(</code><code>0</code><code>,</code><code>0</code><code>,</code><code>0</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>};</code>
<code> </code><code>//为三个菜单添加事件监听器</code>
<code> </code><code>redItem.addActionListener(menuListener);</code>
<code> </code><code>greenItem.addActionListener(menuListener);</code>
<code> </code><code>blueItem.addActionListener(menuListener);</code>
<code> </code><code>blackItem.addActionListener(menuListener);</code>
<code> </code><code>//将菜单项组合成右键菜单</code>
<code> </code><code>pop.add(redItem);</code>
<code> </code><code>pop.add(greenItem);</code>
<code> </code><code>pop.add(blueItem);</code>
<code> </code><code>pop.add(blackItem);</code>
<code> </code><code>//将右键菜单添加到drawArea对象中</code>
<code> </code><code>drawArea.add(pop);</code>
<code> </code><code>//将image对象的背景色填充成白色</code>
<code> </code><code>g.fillRect(</code><code>0</code><code>, </code><code>0</code><code>, AREA_WIDTH, AREA_HEIGHT);</code>
<code> </code><code>drawArea.setPreferredSize(</code><code>new</code> <code>Dimension(AREA_WIDTH,AREA_HEIGHT));</code>
<code> </code><code>//监听鼠标移动动作</code>
<code> </code><code>drawArea.addMouseMotionListener(</code><code>new</code> <code>MouseMotionAdapter(){</code>
<code> </code><code>//实现按下鼠标键并拖动的事件处理器</code>
<code> </code><code>public</code> <code>void</code> <code>mouseDragged(MouseEvent e) {</code>
<code> </code><code>//如果preX和preY大于0</code>
<code> </code><code>if</code><code>(preX></code><code>0</code><code>&&preY></code><code>0</code><code>){</code>
<code> </code><code>//设置当前颜色</code>
<code> </code><code>g.setColor(foreColor);</code>
<code> </code><code>//绘制从上一次鼠标拖动事件点到本次鼠标拖动事件点的线段</code>
<code> </code><code>g.drawLine(preX, preY, e.getX(), e.getY());</code>
<code> </code><code>//将当前鼠标事件点的x、y坐标保存起来</code>
<code> </code><code>preX=e.getX();</code>
<code> </code><code>preY=e.getY();</code>
<code> </code><code>//重绘drawArea对象</code>
<code> </code><code>drawArea.repaint();</code>
<code> </code><code>});</code>
<code> </code><code>drawArea.addMouseListener(</code><code>new</code> <code>MouseAdapter(){</code>
<code> </code><code>public</code> <code>void</code> <code>mouseReleased(MouseEvent e) {</code>
<code> </code><code>//弹出右键菜单</code>
<code> </code><code>if</code><code>(e.isPopupTrigger()){</code>
<code> </code><code>pop.show(drawArea, e.getX(), e.getY());</code>
<code> </code><code>//松开鼠标键,把上一次鼠标拖动事件的 x y坐标设为-1;</code>
<code> </code><code>preX=-</code><code>1</code><code>;</code>
<code> </code><code>preY=-</code><code>1</code><code>;</code>
<code> </code><code>f.add(drawArea);</code>
<code> </code><code>f.pack();</code>
<code> </code><code>f.setVisible(</code><code>true</code><code>);</code>
<code> </code><code>f.addWindowListener(</code><code>new</code> <code>WindowAdapter(){</code>
<code> </code><code>public</code> <code>void</code> <code>windowClosing(WindowEvent e){</code>
<code> </code><code>System.exit(</code><code>0</code><code>);</code>
<code> </code><code>f.setLocationRelativeTo(</code><code>null</code><code>);</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>
<code> </code><code>new</code> <code>HandDraw().init();</code>
<code> </code><code>class</code> <code>DrawCanvas </code><code>extends</code> <code>Canvas{</code>
<code> </code><code>public</code> <code>void</code> <code>paint(Graphics g) {</code>
<code> </code><code>g.drawImage(image, </code><code>0</code><code>, </code><code>0</code><code>, </code><code>null</code><code>);</code>
<code> </code><code>}</code>
<code>}</code>
本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1282131,如需转载请自行联系原作者