Java 鼠标事件 plus 图形
来源:互联网 发布:百度 mysql 编辑:程序博客网 时间:2024/05/01 09:20
上图是笔者应用Java鼠标事件的捕获,结合Java图形库功能做的一个简单的Painter程序,非常简单。“麻雀虽小,五脏俱全”,这个小程序应用了Java对用户操作的事件的捕获,又应用了Java二维图形功能。捕获事件和图形库有什么用处呢?用处非常大,因为结合这两种技术我们可以开发自己的“可见的,可操控的用户自定义对象”。
Java语言当前在软件工程领域的应用,主要是用于开发Management Information System,即开发管理信息系统。Java主要用于业务逻辑的操作,充当幕后英雄,是网络上的“活雷锋”,与用户交互的Graphical User Interface的工作由Html,javascript,Flash等完成。Java似乎永远都是后台剧务,抢风头、露脸面的机会轮不到Java。
其实不然,例如,我们要开发一个Work Flow平台,开发一个协同工作系统,需要给用户一个图形化的界面来定义工作流,需要定义工作流的节点,节点之间的流转关系,流转事件的触发条件等等,就需要给用户一个可以操控的图形化界面。如下图:
Java语言的AWT包提供了事件的监听器功能,而且提供了Graphics2D图形包。想深入研究的朋友可以深入看一下AWT、Swing和Graphics2D方面的内容。我的Painter程序源码如下:
//
// Description: Java Program to demonstrate capturing mouse event
// author: WangQingda
// date: 2009.05.19
//
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import java.awt.Graphics2D;
public class DrageFrame extends javax.swing.JFrame
{
private int oldX=0;
private int oldY=0;
public DrageFrame() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args)
{
//创建窗口对象
DrageFrame drageframe = new DrageFrame();
}
private void jbInit() throws Exception
{
this.addMouseListener(new DrageFrame_this_mouseAdapter(this));
this.getContentPane().setLayout(flowLayout1);
this.setSize(600,400);
this.setVisible(true);
this.setTitle("鼠标事件与图形演示:作者WangQingda");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void this_mousePressed(MouseEvent e)
{
//鼠标按下
this.oldX=e.getX();
this.oldY=e.getY();
System.out.println("pressed : "+e.getX()+" -- "+e.getY());
}
public void this_mouseReleased(MouseEvent e) {
//鼠标释放
int newX=e.getX();
int newY=e.getY();
System.out.println("released : "+e.getX()+" -- "+e.getY());
Graphics2D pt=(Graphics2D)this.getGraphics();
pt.drawLine(this.oldX,this.oldY,newX,newY);
}
FlowLayout flowLayout1 = new FlowLayout();
}
class DrageFrame_this_mouseAdapter extends MouseAdapter {
private DrageFrame adaptee;
DrageFrame_this_mouseAdapter(DrageFrame adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.this_mousePressed(e);
}
public void mouseReleased(MouseEvent e) {
adaptee.this_mouseReleased(e);
}
}
一个实际应用中的用户自定义的可操控的图形对象程序的开发可能要比这复杂得多,要考虑图形对象的数据存储、数据结构、算法。图形的刷新,用户自定义对象的遮挡问题等等。
- Java 鼠标事件 plus 图形
- Java基础——图形用户界面+Action鼠标键盘事件+对话框Dialog-菜单
- Java简单图形编辑器 放置、移动和擦除方块 鼠标事件测试程序 Java核心技术 事件处理
- Java检测鼠标事件
- Java鼠标双击事件
- Java鼠标双击事件
- Java 鼠标事件
- java鼠标事件
- Java中的鼠标事件
- Java监听鼠标事件
- Java鼠标事件MouseEvent
- JAVA鼠标事件
- java GUI 鼠标事件
- java鼠标事件监听
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
- python Tkinter图形用户界面组件(鼠标、键盘事件)
- JAVA中的鼠标双击事件
- JAVA中的鼠标双击事件
- C# 开发PDA程序中软键盘(sip)覆盖录入区域的解决办法
- 两个文件之间的字符串匹配
- 基于内容的信息存取与MPEG-7
- .net关于xml文件命名空间的解析读取
- r+树
- Java 鼠标事件 plus 图形
- 质量管理八项原则及其应用指南
- 图片连续上下滚动代码JavaScript
- 逆向程序员这么值钱?
- 安装sql server 2008“性能计数器注册表配置单元一致性”失败的解决办法
- Debug和Release之区别
- 2009年5月20日星期三
- C# 转换图形为PCX 格式
- 中国移动Mas短信平台开发增值服务的一些心得