- 浏览: 31075 次
- 性别:
最新评论
-
hlf297512399:
支持,不错。。。。。。汤姆~~~~散花~
毕业生活第一季——fubai -
hold_on:
来捧场咯
毕业生活第一季——fubai -
huangfeiNetJava:
学姐加油!
毕业生活第一季——fubai -
javafound:
,嗯,努力不停步~
毕业生活第一季——fubai -
daragon:
daragon 写道哇塞,妹子写的文章果真有声有色不过最底下给 ...
集群hadoop装机步骤(1)
画板的是实现的思路
第一部 自定义一个DrawFrame类继承系统的JFrame类
第二部 自定义一个显示方法 设置窗体的名称 大小 居中等属性
第三部 创建几个按钮 并加载到当前对象上
第四步 为按钮设置监听器 并实现事件处理 具体来说 就在为按钮设置一个动作命令
然后在处理事件的时侯判断是哪个按钮发生了动作 若是颜色 将得到的颜色赋值给私有属性
color 若是其他的按钮赋给私有属性item。
第五步 设置鼠标监听器 将监听到的消息 传给事件处理类
第六步 明确处理类中要有一个构造函数参数分别是 从DrawFrame中传递来的当前的画布对象 和当前对象
第七步 注意在 处理类DrawListener中设置画布对象属性 当前对象的属性 以及4个坐标属性。
第八步 明确处理类要实现 MouseListener,MouseMotionListener 接口所以要重写接口中的方法
在mousePressed方法中将第一个点的坐赋给x1,y1在mouseReleased将第二点的坐标赋给
x2,y2 并判断当前按下的按钮是谁 设置当前的颜色 其他的方法也要重写 可以不实现
第九步 自定义一个抽象类Draw 再分别定义画直线 曲线的类 继承自该类 并复写其方法
值得注意的是画布对象在不同的子类中要调用不同的方法处理 画图功能
第十步 因为以及判断好当前按钮是谁 再在以前的基础上不同的按钮 用几个不同的画图类实例化不同的对象
调用各自的方法 画图 (注意 因为曲线的特殊性 要特别处理)
第十一步在drawframe类中 写一个主函数 并且实例化一个对象 调用显示方法
第一部 自定义一个DrawFrame类继承系统的JFrame类
第二部 自定义一个显示方法 设置窗体的名称 大小 居中等属性
第三部 创建几个按钮 并加载到当前对象上
第四步 为按钮设置监听器 并实现事件处理 具体来说 就在为按钮设置一个动作命令
然后在处理事件的时侯判断是哪个按钮发生了动作 若是颜色 将得到的颜色赋值给私有属性
color 若是其他的按钮赋给私有属性item。
第五步 设置鼠标监听器 将监听到的消息 传给事件处理类
第六步 明确处理类中要有一个构造函数参数分别是 从DrawFrame中传递来的当前的画布对象 和当前对象
第七步 注意在 处理类DrawListener中设置画布对象属性 当前对象的属性 以及4个坐标属性。
第八步 明确处理类要实现 MouseListener,MouseMotionListener 接口所以要重写接口中的方法
在mousePressed方法中将第一个点的坐赋给x1,y1在mouseReleased将第二点的坐标赋给
x2,y2 并判断当前按下的按钮是谁 设置当前的颜色 其他的方法也要重写 可以不实现
第九步 自定义一个抽象类Draw 再分别定义画直线 曲线的类 继承自该类 并复写其方法
值得注意的是画布对象在不同的子类中要调用不同的方法处理 画图功能
第十步 因为以及判断好当前按钮是谁 再在以前的基础上不同的按钮 用几个不同的画图类实例化不同的对象
调用各自的方法 画图 (注意 因为曲线的特殊性 要特别处理)
第十一步在drawframe类中 写一个主函数 并且实例化一个对象 调用显示方法
package net.java.t071001; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; /** * 定义一个DrawFram类继承Frame */ public class DrawFrame extends JFrame { //主函数 public static void main(String[] args) { DrawFrame df =new DrawFrame(); df.init(); } //定义一个init()方法 public void init(){ this.setTitle("画板");//设置名字为画板 this.setLocationRelativeTo(null);//设置位置为居中显示 this.setSize(400,600);//设置大小 this.setResizable(false);//设置大小不可变 this.setDefaultCloseOperation(3);//设置关闭窗口时程序退出 FlowLayout fl = new FlowLayout();//设置布局 this.setLayout(fl); JButton jline = new JButton("画直线");//实例化一个画直线的按钮 jline.setActionCommand("Line");//设置动作命令 JButton jCurve = new JButton("画曲线");//实例化一个画曲线的按钮 jCurve.setActionCommand("Curve");//设置动作命令 JButton jOval= new JButton("画圆");//实例化一个画圆的按钮 jOval .setActionCommand("Oval");///设置动作命令 JButton jRect = new JButton("画矩形");//实例化一个画矩形的按钮 jRect.setActionCommand("Rect");//设置动作命令 JButton jFillOval = new JButton("画填充圆");//实例化一个画填充圆的按钮 jFillOval.setActionCommand("FillOval");//设置动作命令 JButton jFillRect = new JButton("画填充矩形");//实例化一个画填充矩形的按钮 jFillRect.setActionCommand("FillRect");//设置动作命令 JButton jColor = new JButton("颜色");//实例化一个颜色的按钮 jColor .setActionCommand("Color");//设置动作命令 this.add(jline);//把按钮加到窗体上 this.add(jCurve); this.add(jOval); this.add(jRect); this.add(jFillOval); this.add(jFillRect); this.add(jColor); ActionListener al =new ActionListener(){ public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Color")){ // JColorChooser类是一个颜色选择面板,使用showDialog方法将界面显示出来,null表示没有指定父窗体,第二参数是标题,但三个参数是默认的颜色 color = javax.swing.JColorChooser.showDialog(null, "颜色选择器", Color.BLACK); } else { // 得按钮上的动作命令值。 item = e.getActionCommand(); } } }; jline.addActionListener(al);//将监听器加到按钮上 jCurve.addActionListener(al); jOval.addActionListener(al); jRect.addActionListener(al); jFillOval.addActionListener(al); jFillRect.addActionListener(al); jColor.addActionListener(al); // 窗体可见 this.setVisible(true); //获取画布对象 Graphics g = this.getGraphics(); //实例化画图形事件处理类的对象 DrawListener dl = new DrawListener(g,this); //给窗体添加鼠标监听器 this.addMouseListener(dl); this.addMouseMotionListener(dl); } //定义公有的方法用来获取颜色 public Color getColor(){ return color; } //定义公有的方法用来获取选择的图形 public String getItem(){ return item; } //定义颜色属性 private Color color = Color.BLACK; //定义图形属性 private String item = "Line"; }
package net.java.t071001; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; public class DrawListener implements MouseListener,MouseMotionListener { //定义保存坐标值的四个属性 private int x1,y1,x2,y2; private Graphics g; private DrawFrame df; //接收画布对象的构造函数 public DrawListener(Graphics g ,DrawFrame df){ this.g = g; this.df = df; } //重写鼠标点击触发方法 public void mousePressed(MouseEvent e) { x1=e.getX();//将鼠标得到的付给相应的变量 y1=e.getY(); } //重写鼠标释放触发方法 public void mouseReleased(MouseEvent e) { x2=e.getX(); y2=e.getY(); Draw draw; //判断点击的是否是直线 if(df.getItem().equals("Line")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画直线类的对象 draw = new DrawLine(); //调用画直线的方法 draw.draw(g, x1, y1, x2, y2); } else if(df.getItem().equals("Oval")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画类的对象 draw = new DrawOval(); //调用画圆形的方法 draw.draw(g, x1, y1,Math.abs(x1-x2), Math.abs(y1-y2)); } else if(df.getItem().equals("Rect")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画类的对象 draw = new DrawRect(); //调用画矩形的方法 draw.draw(g, x1, y1,Math.abs(x1-x2), Math.abs(y1-y2)); } else if(df.getItem().equals("FillRect")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画类的对象 draw = new DrawFillRect(); //调用画填充矩形的方法 draw.draw(g, x1, y1, Math.abs(x1-x2), Math.abs(y1-y2)); } else if(df.getItem().equals("FillOval")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画类的对象 draw = new DrawFillOval(); //调用画填充圆形的方法 draw.draw(g, x1, y1, Math.abs(x1-x2), Math.abs(y1-y2)); } } //重写鼠标拖动触发方法 public void mouseDragged(MouseEvent e) { //在鼠标释放的时候就获取第二个坐标点的值 x2 = e.getX(); y2 = e.getY(); Draw draw; //判断点击的是否是直线 if(df.getItem().equals("Curve")){ //得到你选择的颜色设置当前图形的颜色 g.setColor(df.getColor()); //实例化画直线类的对象 draw = new DrawLine(); //调用画曲线的方法 draw.draw(g, x1, y1, x2, y2); //互换坐标 x1 = x2; y1 = y2; } } public void mouseClicked(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mouseMoved(MouseEvent arg0) { } }
package net.java.t071001; import java.awt.Graphics; /** * 定义一个Draw抽象类 * @author 汤剑男 * */ public abstract class Draw { //定义一个画图的方法 public abstract void draw(Graphics g, int x1, int y1, int x2, int y2); }
package net.java.t071001; import java.awt.Graphics; /** * 定义一个drawline类继承抽象类 draw * */ public class DrawLine extends Draw { //重写draw抽象类中的draw抽象方法 public void draw(Graphics g, int x1, int y1, int x2, int y2) { //输出信息 System.out.println("画直线"); // 调用画直线的方法 g.drawLine(x1, y1, x2, y2); } }
package net.java.t071001; import java.awt.Graphics; /** * 定义一个drawoval类继承抽象类 draw * */ public class DrawOval extends Draw { //重写draw抽象类中的draw抽象方法 public void draw(Graphics g, int x1, int y1, int x2, int y2) { //输出信息 System.out.println("画圆形"); // 调用画圆形的方法 g.drawOval(x1, y1, x2, y2); } }
package net.java.t071001; import java.awt.Graphics; /** * 定义一个drawrect类继承抽象类 draw * */ public class DrawRect extends Draw { //重写draw抽象类中的draw抽象方法 public void draw(Graphics g, int x1, int y1, int x2, int y2) { //输出信息 System.out.println("画矩形"); // 调用画矩形的方法 g.drawRect(x1, y1, x2, y2); } }
package net.java.t071001; import java.awt.Graphics; public class DrawFillOval extends Draw { //重写draw抽象类中的draw抽象方法 public void draw(Graphics g, int x1, int y1, int x2, int y2) { //输出信息 System.out.println("画填充圆"); // 调用画填充圆的方法 g.fillOval(x1, y1, x2, y2); } }
ackage net.java.t071001; import java.awt.Graphics; public class DrawFillRect extends Draw { //重写draw抽象类中的draw抽象方法 public void draw(Graphics g, int x1, int y1, int x2, int y2) { //输出信息 System.out.println("画填充矩形"); // 调用画填充矩形的方法 g.fillRect(x1, y1, x2, y2); } }
发表评论
-
容易忘记混淆的组件总结
2011-09-30 00:38 922JMenuBar---菜单条 作用:都是用来创建一个水平菜单栏 ... -
集合框架的总结
2011-07-29 00:07 790集合框架3大接口分别是set list map 都在java. ... -
认识文件和流
2011-07-27 09:19 793文件 文件有相对路径: ... -
关键字总结
2011-07-24 01:41 852最常见关键字总结 1------访问修饰符 pub ... -
重绘-刷新的程序语言
2011-07-15 13:38 908画板实现重绘和橡皮擦 重绘的实现主要在首先要自定义一个通用 ... -
数组,队列,泛型
2011-07-13 15:41 1107数组注意: 数组是引 ... -
计算器的实现
2011-07-13 03:18 866------------简单计算器的实现----------- ... -
初识监听器
2011-07-10 01:18 927接口是由常量和抽象方法(不实现)组成 语法格式 public ... -
界面设计第一课
2011-07-09 18:01 1009构造函数 格式 访 ... -
java的多态特性
2011-07-09 13:23 9731 继承的语法格式 public class 子类名 ext ... -
类,对象,OOP
2011-07-09 13:21 7971.有哪些是对象? 现实生活中有哪些是对象? 对象是现实生 ... -
初识java-初级阶段
2011-07-09 13:19 6831.了解java的基本语法规则 访问修饰符 class ...
相关推荐
易语言画板列表源码例程程序结合易语言扩展界面支持库,使用画板实现列表功能。点评:易语言画板列表源码是易语言画板组件应用例程。
火山安卓高级画板实现画板开发源码
易语言画板实现简单的验证码。@风间琉璃。
fps表与画板实现完美打印预览 很好fps表与画板实现完美打印预览
易语言画板实现图片浏览效果源码。@q1287166316。
资源介绍:。易语言画板实现圆形按纽源码。资源作者:。@易友。资源下载:。
资源介绍:。通过画板实现标签透明。资源作者:。易语言源代码大全。资源下载:。
易语言画板实现炸弹人小游戏源码。@in_shadow。
由易语言的画板实现的无闪烁的支持实时更新进度的扁平进度条。 蓝色风格,高端简约
易语言画板实现万花尺源码。算法比较简单 1.小圆自转 2.小圆公转 3.将小孔轨迹用直线连接。@没有翅膀de鱼。Tags:万花尺。
阿波罗尼圆的画板实现及应用.doc
画板实现炸弹人小游戏-易语言.zip
资源介绍:。源码通过调用易语言画板实现属性列表框的绘制源码。资源作者:。@免费资源网。资源界面:。资源下载:。Tags:属性框。