用Java编写的简单手绘程序--原创
2013-08-24 17:14
344 查看
1、Java版本简单的手绘程序,点击右键可以选择颜色,对初学Java的同学还是很有帮助!学会做这个,下一步就可以做出一个简单的Windows版本的画图!
群号:160243674--Java程序员联盟 欢迎大家的加入!
package project; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; /** * *@author huyongjian Oracle(Compus Solution Group) * @Date 2013-8-18 * @version 2.0 * @since JDK1.6(建议) Copy Right Information COMPUS SOLUTION GROUP IDE:Eclipse class: 绘制图像01 */ 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 blueItem=new MenuItem("蓝色"); MenuItem blackItem=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("简单手绘程序"); 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("绿色")){ foreColor=new Color(0,255,0); } if(e.getActionCommand().equals("红色")){ foreColor=new Color(255,0,0); } if(e.getActionCommand().equals("蓝色")){ foreColor=new Color(0,0,255); } if(e.getActionCommand().equals("黑色")){ foreColor=new Color(0,0,0); } } }; //为三个菜单添加事件监听器 redItem.addActionListener(menuListener); greenItem.addActionListener(menuListener); blueItem.addActionListener(menuListener); blackItem.addActionListener(menuListener); //将菜单项组合成右键菜单 pop.add(redItem); pop.add(greenItem); pop.add(blueItem); pop.add(blackItem); //将右键菜单添加到drawArea对象中 drawArea.add(pop); //将image对象的背景色填充成白色 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) { //如果preX和preY大于0 if(preX>0&&preY>0){ //设置当前颜色 g.setColor(foreColor); //绘制从上一次鼠标拖动事件点到本次鼠标拖动事件点的线段 g.drawLine(preX, preY, e.getX(), e.getY()); } //将当前鼠标事件点的x、y坐标保存起来 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()); } //松开鼠标键,把上一次鼠标拖动事件的 x y坐标设为-1; preX=-1; preY=-1; } }); f.add(drawArea); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); f.setLocationRelativeTo(null); } public static void main(String[] args) { new HandDraw().init(); } class DrawCanvas extends Canvas{ public void paint(Graphics g) { g.drawImage(image, 0, 0, null); } } }
群号:160243674--Java程序员联盟 欢迎大家的加入!
相关文章推荐
- 【练习题】构造方法 编写Java程序,模拟简单的计算器。
- 用Java编写简单的定时关机程序(Calendar,Timer)
- RSA算法简单实现加密、解密、签名、验证(原创Java程序)
- 用java编写简单UDP网络通信程序
- 编写简单java程序
- 【尚学堂之行——第三天】编写简单的Java程序
- Java入门1-搭建环境,编写简单程序
- 用java编写一个简单的字符串加密解密程序,将字符串分成若干行,实现字符串以一列一列读取,并还原之前输入的字符串。这里实现4行输出。
- Java源码-简单手绘程序
- java编写简单的E-mail发送端程序
- JAVA JNI 0基础学会简单编写程序
- Test__GUI__用java编写一个简单的记事本程序,打包成jar双击运行
- 用java编写spark程序,简单示例及运行
- Java网络学习笔记1:用(Server)Socket编写简单的客户/服务器程序
- 编写简单的java程序
- Java入门篇(一)——如何编写一个简单的Java程序
- 使用eclipse编写简单java程序
- 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。 编写构造方法,用于初始化n1和n2,再为该类定义 加(addition)、 减(su
- 利用if,else编写简单java程序
- 用java编写简单UDP网络通信程序