java AWT实现画图功能
来源:互联网 发布:v sql cs statistics 编辑:程序博客网 时间:2024/05/17 08:27
package javaAWT;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;import java.awt.Frame;import java.awt.Graphics;import java.awt.MenuItem;import java.awt.PopupMenu;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.awt.event.MouseMotionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.image.BufferedImage;import java.lang.ProcessBuilder.Redirect;import java.security.KeyStore.PrivateKeyEntry;public class HandDraw { // 画图区的宽度,高度。 private final int AREA_WIDTH = 600; private final int AREA_HEIGHT = 500; // 上一次鼠标坐标 private int preX = -1; private int preY = -1; // 右键菜单用于设置画笔颜色 PopupMenu popupMenu = new PopupMenu(); MenuItem readItem = new MenuItem("Red"); MenuItem greenItem = new MenuItem("Green"); MenuItem blueItem = new MenuItem("Blue"); // 定义一个BufferedImage 对象 BufferedImage bufferedImage = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_BGR); // 获取bufferedImage对象的Graphics Graphics graphics = bufferedImage.getGraphics(); private Frame frame = new Frame("HandDraw"); private DrawCanvas drawCanvas = new DrawCanvas(); private Color foreColor = new Color(255,0,0); public void init() { frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub super.windowClosing(e); System.exit(0); } }); // 定义右键菜单的事件监听器 ActionListener menuListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getActionCommand().equals("Red")) { foreColor = new Color(255, 0, 0); } if (e.getActionCommand().equals("Green")) { foreColor = new Color(0,255,0); } if (e.getActionCommand().equals("Blue")) { foreColor = new Color(0, 0, 255); } } }; // 为三个菜单添加事件监听器 readItem.addActionListener(menuListener); greenItem.addActionListener(menuListener); blueItem.addActionListener(menuListener); // 将菜单组合成右键菜单 popupMenu.add(readItem); popupMenu.add(greenItem); popupMenu.add(blueItem); // 将右键菜单添加到drawCanvas对象中 drawCanvas.add(popupMenu); // 将bufferedImage对象的背景埴充白色 graphics.fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT); drawCanvas.setPreferredSize(new Dimension(AREA_WIDTH, AREA_HEIGHT)); // 监听鼠标称动事件 drawCanvas.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub // 如果preX和preY大于 if (preX > 0 && preY > 0) { // 设置当前颜色 graphics.setColor(foreColor); // 绘制从上一次到本次鼠标称动线段 graphics.drawLine(preX, preY, e.getX(), e.getY()); } // 将保存当前鼠标位置 preX = e.getX(); preY = e.getY(); System.out.println("preX:" + preX +" preY:" + preY); // 重绘drawCanvas对象 drawCanvas.repaint(); } }); // drawCanvas添加鼠标事件 drawCanvas.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub super.mouseReleased(e); // 弹出右键菜单 if (e.isPopupTrigger()) { popupMenu.show(drawCanvas, e.getX(), e.getY()); } // 松开鼠标键时设置上一次的坐标为-1; preX = -1; preY = -1; } }); frame.add(drawCanvas); frame.pack(); frame.setVisible(true); } class DrawCanvas extends Canvas { @Override // 重定paint方法实现绘图 public void paint(Graphics g) { // TODO Auto-generated method stub super.paint(g); // 将bufferedImage绘制到该组件上 g.drawImage(bufferedImage, 0, 0, null); } } public static void main(String[] args) { new HandDraw().init(); }}
阅读全文
0 0
- java AWT实现画图功能
- Java -- AWT 画图,图像处理
- 利用鼠标实现画图功能 java
- 12864 实现画图功能
- c#实现画图功能
- java画图总结之一 java.awt和javax.swing
- [Java] AWT 画图方法 public void paint(Graphics g)
- java AWT 绘图,实现弹球游戏,有实现keylistener,timer功能
- 使用AWT组件实现验证码功能
- android实现简单画图功能
- js实现简单画图功能
- [疯狂Java]AWT:拖放功能、拖放目标
- 用JAVA awt实现Image Asset Studio生成圆形或圆角矩形图片功能
- Java实现画图面板
- Java用AWT实现的状态栏
- Java计算器源代码 awt+swing图形界面实现
- Java AWT实现的计算器代码
- Java源码-AWT菜单的实现
- Mysql 用户管理
- java鬼混笔记:lucene 7、查询排序和分页
- 安装python 第三方库(whl,py格式)
- Shell 统计导出数据 awk 里使用shell变量 参数
- awk sed 命令
- java AWT实现画图功能
- Python 调用 Shell命令
- 各大公司Java后端开发面试题总结
- 安装 Cacti 监控
- 例题7-7 天平难题(Mobile Computing, ACM/ICPC Tokyo 2005, UVa1354)
- 增加yum源方式 安装升级 Mysql
- Yum
- 第十章ceres优化部分
- Cacti 抓取数据方式 安装spine