1、Java版本简单的手绘程序,点击右键可以选择颜色,对初学Java的同学还是很有帮助!学会做这个,下一步就可以做出一个简单的Windows版本的画图!

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.p_w_picpath.BufferedImage;
/****@author huyongjian Oracle(Compus Solution Group)* @Date  2013-8-18* @version 2.0* @since JDK1.6(建议)Copy Right Information    COMPUS SOLUTION GROUPIDE:Eclipseclass:绘制图像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 p_w_picpath=new BufferedImage(AREA_WIDTH,AREA_HEIGHT,BufferedImage.TYPE_INT_RGB);//获取p_w_picpath对象的GraphicsGraphics g=p_w_picpath.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);//将p_w_picpath对象的背景色填充成白色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大于0if(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(p_w_picpath, 0, 0, null);}}
}

群号:160243674--Java程序员联盟 欢迎大家的加入!


转载于:https://blog.51cto.com/1936625305/1282131

用Java编写的简单手绘程序--原创相关推荐

  1. Java源码-简单手绘程序

    使用BufferedImage保存手绘图片,使用DrawCanvas作为画布,响应鼠标拖曳操作,描绘红.蓝.绿三种颜色的直线. 代码如下:(摘自<疯狂Java讲义>第11章) import ...

  2. java简单手绘程序

    package CrazyJava;import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax. ...

  3. java体重指数计算器程序_用Java编写一个简单的计算器程序

    展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...

  4. Java学习之编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符。

    案例介绍: 编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符. 加密规则:输入A,输出Z;输入B,输出Y:输入a,输出z;输入b,输出y. 案例代码: import java.io.* ...

  5. JAVA编写的简单计算器程序

    系列文章目录 文章目录 系列文章目录 前言 一.JAVA编写的简单计算器程序 前言 链接:https://pan.baidu.com/s/1oPJRIbwxcXgewZ_KZaWzTg 提取码:egy ...

  6. 用java编写一个简单计算器

    java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...

  7. java画图颜色_手绘板,多种颜色选择。我抄的《疯狂java讲义》的,包我乱导的,但代码能用。...

    [java]代码库import javax.swing.*; import java.awt.image.*; import java.awt.datatransfer.*; import javax ...

  8. 如何用java编写一个简单的多人PK游戏

    如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...

  9. 编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种。

    编写一个简单的考试程序,在控制台完成出题.答题的交互.试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种.其中,单选题和多选题继承试题类,如下图所示. ...

  10. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

最新文章

  1. 计算机图形学入门总结!
  2. 只要尝试过飞,日后走路也会仰望天空
  3. Verilog初级教程(23)Verilog仿真中的显示任务
  4. Spark的RDD行动算子
  5. python wing 免费下载安装
  6. gedit乱码 fedora
  7. 萝卜家园win11 32位官方旗舰版iso文件v2021.08
  8. PHP笔记-PHP中构造函数要注意的地方
  9. angular 点菜_JavaScript实现的select点菜功能示例
  10. 新东方年会节目员工吐槽公司问题 俞敏洪:奖励12万
  11. opencv图像分析与处理(7)- 频率域滤波的基础公式、步骤与C++实现
  12. ubuntu12.04安装出现系统内部错误
  13. 潦草字体在线识别_想要知道某些字是什么字体?帮助你以最快的方式识别
  14. 移动端文字向左无缝滚动特效(原生纯js哦)
  15. macchanger克隆MAC地址
  16. 虚拟服务器的密码忘记了,虚拟平台管理术:忘记 ESXi 主机的 root 密码该怎么办?...
  17. Fiddler 抓包HTTPS包,抓手机包
  18. MATLAB | 矩阵元素引用之求下标或序号(sub2ind、ind2sub函数使用)
  19. 委外采购申请或委外订单收货完成后,造成的MRP异常处理
  20. fwr310刷openwrt_全网首拆迅捷FWR310 V4.0 300M 路由硬改后刷华硕N14U

热门文章

  1. 知乎在线部分的技术架构
  2. 一个Lumen多层拆分手记
  3. 【Objecitve C代码】让对象沿着某条路径移动的动画效果
  4. 怎样理解和识别 Linux 中的文件类型
  5. VUE 注册验证码页面实例
  6. windows 编程 —— 子窗口 与 子窗口控件
  7. Ubuntu配置 PPTP 服务器端
  8. php常见错误和解决办法
  9. JSONString 与 JSONData 与字典或者数组互相转化
  10. ExcuteScalar ExecuteNonQuery