该代码主要实现的功能是能绘制简单几何图形,如:直线,矩形,椭圆等,能选择所画几何图形的边框颜色。

画图板包含以下几个部分:
1.画图的界面
创建一个DrawPad类
2.绘制的工具
获取方法:窗体对象.getGraphics();
3.鼠标监听器
编写一个实现MouseListener接口的类
4.鼠标事件类

首先,编写一个DrawPad类

public class DrawPad{public static void main(String[]args){  DrawPad drawpad = new DrawPad();drawpad.init();}private void init(){//添加一个窗体JFrame draw = new JFrame();//设置窗体属性draw.setTitle("画板");draw.setSize(600,500);draw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//添加菜单条JMBJMenuBar JMB = new JMenuBar();draw.setJMenuBar(JMB);//将菜单条JMB添加到窗体上//添加菜单JM,JM1JMenu JM = new JMenu("File");JMB.add(JM);//将菜单添加到菜单条上JMenu JM1 = new JMenu("Edit");JMB.add(JM1);//添加菜单项JMIJMenuItem JMI = new JMenuItem("new");JM.add(JMI);//将菜单项添加到菜单上//添加面板JPanel JP = new JPanel();JP.setBackground(Color.WHITE);JP.setPreferredSize(new Dimension(0,80));draw.add(JP);DrawListener mouse = new DrawListener();//定义图形数组 按钮jbuttonString[]name={"直线","矩形","椭圆","分形","波纹"};for(int i=0;i<name.length;i++){JButton button= new JButton(name[i]);JP.add(button);jbutton.addActionListener(mouse);//在按钮上添加动作监听器}//添加图形的颜色按钮Color color[]={Color.RED,Color.BLUE,Color.CYAN};for(int i=0;i<color.length;i++){JButton button = new JButton(color[i]);button.setBackground(color[i]);button.setPreferredSize(new Dimension(30,30));JP.add(button);button.addActionListener(mouse);}draw.setVisible(true);//可视化 在这行代码之前要完成所有组件的添加//获取画笔Graphics a= draw.getGraphics();System.out.println(a);draw.addMouseListener(mouse);mouse.a=a;}
}

然后,编写一个实现MouseListener,ActionListener接口的类


public class DrawListener implements MouseListener,ActionListener {public Graphics a;int x1,x2,y1,y2;public String name;public void setA(Graphics a) {Graphics A = a;}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stubSystem.out.println("点击");//a.drawLine(100,100,400,100);}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stubx1=e.getX();y1=e.getY();System.out.println("按下");}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stubx2=e.getX();y2=e.getY();/*if((x1>x2)&&(y1>y2)) {a.drawLine(x1, y1, x2, y2);//    左上角的坐标   宽  高  a.drawRect(x2, y2, (x1-x2) ,(y1-y2));}else if((x1>x2)&&(y1<y2)){a.drawLine(x1, y1, x2, y2);//    左上角的坐标   宽  高  a.drawRect(x2, y1, (x1-x2) ,(y2-y1));}else if((x1<x2)&&(y1>y2)){a.drawLine(x1, y1, x2, y2);//    左上角的坐标   宽  高  a.drawRect(x1, y2, (x2-x1) ,(y1-y2));}else if((x1<x2)&&(y1<y2)){a.drawLine(x1, y1, x2, y2);//    左上角的坐标   宽  高  .a.drawRect(x1, y1, (x2-x1) ,(y2-y1));}*///选择不同的图形进行绘制,以按钮上的文本进行区分if("直线".equals(name)) {a.drawLine(x1, y1, x2, y2);}if ("矩形".equals(name)){a.drawRect(Math.min(x1, x2),Math.min(y1, y2),Math.abs(x2-x1),Math.abs(y2-y1));}if("椭圆".equals(name)) {a.drawOval(Math.min(x1, x2),Math.min(y1, y2),Math.abs(x2-x1),Math.abs(y2-y1));}if("分形".equals(name)) {double x = 0,y = 0;double a1=-1.8,b=-2.0,c=-0.5,d=-0.9;for(int i=0;i<100000;i++) {double x3=Math.sin(a1*y)-c*Math.cos(a1*x);double y3=Math.sin(b*x)-d*Math.cos(b*y);x=x3;y=y3;int px=(int)(x3*100+x1);int py=(int)(y3*100+y1);a.drawLine(px, py, px, py);}}if("波纹".equals(name)) {double x4 = 0,y4 = 0;double a2=1.40,b2=1.56,c2=1.40,d2=-6.56;for(int i=0;i<100000;i++) {double x5=Math.sin(a2*x4)-Math.cos(b2*y4);double y5=Math.sin(c2*x4)-Math.cos(d2*y4);x4=x5;y4=y5;int px=(int)(x5*100+x1);int py=(int)(y5*100+y1);a.drawLine(px, py, px, py);}}System.out.println("释放");}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stubSystem.out.println("进入");}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stubSystem.out.println("离开");}public void actionPerformed(ActionEvent e) {if("".equals(e.getActionCommand())) {JButton jb= (JButton)e.getSource();Color color=jb.getBackground();//获取按钮的背景颜色a.setColor(color);//将画笔设置为按钮的背景颜色}else {name=e.getActionCommand();}}
}

最后,结果截图如下:

用Java实现一个简易画板相关推荐

  1. 用java实现一个简易自动提款机

    用java实现一个简易自动提款机,且有以下要求 如何实现呢?首先,我们定义一个用户类User,同时根据要求设计好属性(本人部分命名没有使用驼峰命名法,不够规范).因为一个人可能有多个卡,卡号又不能重复 ...

  2. 使用Java制作一个简易的远控终端

    使用Java制作一个简易的远控终端 远控终端的本质 1.服务端(攻击者)传输消息 ----> socket连接 ----> 客户端(被攻击者)接收消息 2.客户端执行消息内容(即执行服务端 ...

  3. 用java编写一个简易功能画板_用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  4. java简易计算器考察什么_练习:用java写一个简易计算器

    初学java中的选择,判断,循环和方法的概念,写一个简易的两位数计算器 思路推荐: 写4个方法:加减乘除 利用循环+switch进行用户交互 传递需要操作的两个数 输出结果 package com.j ...

  5. 用Java实现一个简易的植物大战僵尸游戏

    今天给大家分享一个简易的植物大战僵尸游戏,用Java编写,还是挺好玩的. 一.设计思路 1.植物大战僵尸运用Java基础实现,通过滚轮上选择植物,随机生成各种类型僵尸,以及植物. 2.玩家可以安放各种 ...

  6. 用java制作一个简易抽签器

    最近闲来无事,想用Java编写一个随机抽签器,最终编写后的运行结果是这样的 下面说一下怎么具体实现,非常简单. 首先,要想出现这个滚动标签,首先必须要有一个窗口来承载它,所以要在main()方法中创建 ...

  7. 使用java创建一个简易的视屏播放器

    最近有个多媒体的作业,要求使用visualC++和opencv编写一个简易的视屏播放器,对于C/C++残疾者而言是不可能的,于是萌生了用java编写的想法.具体经验分享一下. 目标:制作简易视屏播放器 ...

  8. 用java写一个简易日历

    写一个简易日历 记录学习之路,用java语言,用的IDEA编辑器. 我觉得写日历一定要有两个首要方法,所以我首先先写了两个方法,一个是判断是否是闰年,方法代码如下 static boolean jud ...

  9. java 生成media_使用java创建一个简易的视屏播放器

    最近有个多媒体的作业,要求使用visualC++和opencv编写一个简易的视屏播放器,对于C/C++残疾者而言是不可能的,于是萌生了用java编写的想法.具体经验分享一下. 目标:制作简易视屏播放器 ...

最新文章

  1. MIPS中的异常处理和系统调用【转】
  2. linux存储--inode详解(六)
  3. 【渝粤题库】国家开放大学2021春2726畜禽生产概论题目
  4. python定制框架知识点_python框架中flask知识点总结
  5. Spring Boot 之事件(Event)
  6. 数字风控全流程 实操课程V2.0 第三期
  7. 窃听信道模型中的保密通信性能研究
  8. 手机屏幕坏了怎么把数据导出来_手机屏幕失灵怎么办 手机屏幕失灵解决办法【详解】...
  9. windows电脑提醒功能,定时打卡
  10. skulpt搭建Python在线编译器
  11. Word文档快速翻译的方法,一分钟学会
  12. thinkadmin关联查询
  13. ubuntu16下 vscode配置ros和opencv路径
  14. 20175208 实验二 《Java面向对象程序设计》实验报告
  15. 软件的生命周期及模型
  16. SAP中通过物料号导出采购收货及发票校验记录清单
  17. IAP程序在内测期间的各种问题
  18. 1-1、秋招年3-5月准备期——《Verilog HDL高级数字设计》(第二版)
  19. 美图android手机刷机教程视频,美图M6刷机教程 美图M6线刷救砖教程
  20. 输入电阻和输出电阻的区别

热门文章

  1. vscode插件及快捷键
  2. Windows防火墙使smb共享失败以及ping不通解决方法
  3. java实验环境,实验一(Java开发环境安装与配置
  4. js函数传参时:值传递和引用传递的区别
  5. linux :shutdown() 与 close()函数详解
  6. c++11 多国语言字符串处理
  7. php发邮件exchange,PHP使用PHPMailer发送电子邮件
  8. API、ABI究竟有什么区别?
  9. 计算机管理将c盘分区,新电脑只有C盘怎样分区
  10. php 按键连击,手残键盘党专用~穗奈果的部分连续技(3-5星)一键出招(按键精灵)...