java语言gui编程之内部类和鼠标事件经典2
来源:互联网 发布:怎么连接kad电骡网络 编辑:程序博客网 时间:2024/06/07 23:22
/* 时间: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) { }}
0 0
- java语言gui编程之内部类和鼠标事件经典2
- java语言gui编程之内部类和鼠标事件经典2之两个问题的解决
- java语言gui编程之内部类和鼠标事件经典1
- java语言编程GUI之Window事件经典总结
- GUI编程 鼠标事件和键盘事件
- JAVA GUI(键盘事件 和 鼠标事件)
- java语言GUI编程之鼠标适配器总结2
- java GUI 鼠标事件
- Java语言基础之内部类
- Java语言基础之内部类
- 《Java编程思想》之内部类
- JAVA编程思想之内部类
- java编程思想之内部类
- Java编程思想之内部类
- Java编程思想之内部类
- Java GUI编程(五)鼠标事件:实现画点
- java GUI(鼠标键盘事件)
- java语言GUI编程之鼠标适配器总结
- Android Service 之三(Bind Service,使用 AIDL)
- 求100内出现9的次数
- Android开发--仿景点通景区地图SurfaceView实现
- HDLC WINCE6驱动设计
- POJ 3279 Fliptile (二进制枚举+模拟)
- java语言gui编程之内部类和鼠标事件经典2
- __doPostBack未定义解决方法
- 笔记 快排
- Padding与绘制区域--android:clipToPadding和android:clipChildren
- Android Service 之三(Bind Service,使用 Messenger)
- c++primer练习10.13
- 乱入之青春
- 使用Nuspere PhpEd调试php时出现:failed to run srv web server
- Light oj 1012--dfs(首次觉得自己会了)