java语言gui编程之内部类和鼠标事件经典2
2015-03-21 19:39
369 查看
/* 时间:2015年3月21日19:30:25 目的:使用鼠标的事件来画图。 首先看这个程序的结构中,在主函数main中调用了构造函数创建MyFrame类的对象 在MyFrame类中,声明了成员变量ArrayList类型,points 构造方法中创建了带有title名称的窗体,初始化成员变量points,增加鼠标移动事件监听器 布局设置为空,设置位置和大小,设置可见 在类中定义了paint方法绘制组件 paint声明如下: public void paint(Graphics g); 应该绘制组件的内容时调用此方法; 例如首次显示组件或者组件已损坏并需要修复时。 Graphics 参数中的剪贴区矩形设置为需要绘制的区域。 重写此方法的 Component 子类不需要调用 super.paint(g)。
出于性能的考虑,首次显示宽度或高度为 0 的 Component 时 认为它不需要进行绘制,并且也不需要修复。 还有一个方法是添加点的方法。 自定义监听器类实现了MouseMotionListener,并且实现了其中的 public void mouseDragged(MouseEvent e); 鼠标进入组件按下并拖动时调用该方法。
当然也需要实现
public void mouseMoved(MouseEvent e);
原因也很简单,这是因为实现了一个接口,就要实现该接口中所有的方法,尽管你可以不给出该方法的具体实现,你也要写一个具有空的方法体的对应方法放在哪里,这便是接口,也就是规范的力量。但正如MouseListener接口而言,它一下就有五个方法,在我们只需要实现其中一两个方法时,难道我们就只能听天由命的把所有其他根本不需要的方法也罗列上去吗?并不是这样,这也就引出了适配器的概念。请看下一个博文。
*/import java.awt.*;import java.awt.event.*;import java.util.*;//容器类相关的东西在util包内
public class TestMouseMotion { public static void main(String[] args) { new MyFrame("Drawing..."); } }
class MyFrame extends Frame { ArrayList points = null; public MyFrame(String title) { super(title); points = new ArrayList(); addMouseMotionListener(new MotionListener()); setLayout(null); setBounds(400, 500, 500, 400); setVisible(true); } public void paint(Graphics g) { Iterator it = points.iterator(); while(it.hasNext()) { Color c = g.getColor(); Point p = (Point)it.next(); g.setColor(new Color(204, 204, 255)); g.fillOval(p.x, p.y, 10, 10); g.setColor(c); } } public void addPoint(Point p) { points.add(p); }}
class MotionListener implements MouseMotionListener {
private int num = 0; //鼠标按键在组件上按下并拖动时调用 public void mouseDragged(MouseEvent e) { MyFrame mf = (MyFrame)e.getSource(); mf.addPoint(new Point(e.getX(), e.getY())); if (num++ > 10) { mf.repaint(); num = 0; } } //鼠标进入组件但是无按键按下时调用 public void mouseMoved(MouseEvent e) { }}
相关文章推荐
- java语言gui编程之内部类和鼠标事件经典1
- java语言gui编程之内部类和鼠标事件经典2之两个问题的解决
- GUI编程 鼠标事件和键盘事件
- java语言GUI编程之鼠标适配器总结
- Java GUI编程(五)鼠标事件:实现画点
- java语言编程GUI之Window事件经典总结
- java编程之GUI事件机制之经典
- java语言GUI编程之Key键盘事件总结与GUI章节概略
- java语言GUI编程之鼠标适配器总结2
- 7.JAVA之GUI编程鼠标事件
- 马士兵 J2SE 第11章 GUI编程 事件模型ACTIONEVENT TEXTFIELD事件监听 内部类 PAINT adapter和repaint window事件 键盘事件
- Java GUI编程中的事件处理机制详细讲解
- GUI__【GUI概述】【布局】【Frame】【事件监听机制】【窗体事件】【按钮】【鼠标事件】【键盘事件】【Dialog对话框】【菜单】
- python之Gui编程事件绑定 2014-4-8
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
- Lesson_for_java_day25--java中GUI实例(键盘鼠标事件、菜单栏、自定义弹窗、调用弹窗)
- 黑马程序员_温习 GUI图形用户接口一 (个人笔记)摘要(GUI图形用户界面介绍-----布局管理器-----事件监听机制-----窗体事件---Action(执行事件)----鼠标事件----键
- 黑马程序员:GUI介绍:布局管理器、Frame、事件监听机制、Action事件、鼠标键盘事件、菜单、jar包的双击执行
- unity3d 鼠标事件穿透GUI的处理