learning java AWT 手绘窗口
import java.awt.*;port java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage; public class HandDraw {
private final int AREA_WIDTH = ;
private final int AREA_HEIGHT = ; private int preX = -;
private int preY = -; PopupMenu pop = new PopupMenu();
MenuItem redItem = new MenuItem("red");
MenuItem greenItem = new MenuItem("green");
MenuItem blueItem = new MenuItem("blue"); BufferedImage image = new BufferedImage(AREA_WIDTH,AREA_HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics(); private Frame f = new Frame("Test"); private DrawCanvas drawArea = new DrawCanvas(); private Color foreColor = new Color(,,);
public void init(){
ActionListener menuListener = e -> {
if (e.getActionCommand().equals("green")){
foreColor = new Color(,,);
} if (e.getActionCommand().equals("red")){
foreColor = new Color(,,);
}
if (e.getActionCommand().equals("blue")){
foreColor = new Color(,,);
}
}; redItem.addActionListener(menuListener);
greenItem.addActionListener(menuListener);
blueItem.addActionListener(menuListener); pop.add(redItem);
pop.add(blueItem);
pop.add(greenItem); drawArea.add(pop); g.fillRect(,,AREA_WIDTH,AREA_HEIGHT); drawArea.setPreferredSize(new Dimension(AREA_WIDTH,AREA_HEIGHT)); drawArea.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
if(preX > && preY > ){
g.setColor(foreColor);
g.drawLine(preX,preY, e.getX(),e.getY());
}
preY = e.getY();
preX = e.getX();
drawArea.repaint();
}
}); drawArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()){
pop.show(drawArea, e.getX(),e.getY());
}
preX = -;
preY = -;
}
}); f.add(drawArea);
f.pack();
f.setVisible(true); }; public static void main(String[] args) {
new HandDraw().init(); } class DrawCanvas extends Canvas{
public void paint(Graphics g){
g.drawImage(image,,,null);
}
}
}
output:

learning java AWT 手绘窗口的更多相关文章
- learning java AWT 绝对定位
import javax.swing.*; import java.awt.*; public class NullLayoutTest { Frame f = new Frame("测试窗 ...
- learning java AWT 布局管理器 GridBagLayout
在GridBagLayout布局管理器中,一个组件可以跨越一个或多个网格,并可以设置各网格的大小互不相关. import java.awt.*; public class GridBagTest { ...
- learning java AWT Pannel
import java.awt.*; public class PanelTest { public static void main(String[] args) { var f = new Fra ...
- learning java AWT 剪贴板 传递文本
import javax.swing.*; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.dat ...
- learning java AWT 画图
import javax.swing.*; import java.awt.*; import java.util.Random; public class SimpleDraw { private ...
- learning java AWT 右键菜单
import java.awt.*; import java.awt.event.*; public class SimpleMenu { private Frame f = new Frame(&q ...
- learning java AWT MenuBar Menu MenuItem菜单
import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java ...
- learning java AWT widowEvent and MouseEvent
import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import jav ...
- learning java AWT EventQs
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Ac ...
随机推荐
- Arduino 计算机视觉系统概述
计算机视觉系统概述 计算机视觉系统是最近比较热门的研究领域,今天开始给大家介绍下计算机视觉相关的知识. 视觉是人的所有感官中最敏感的一种,人的视觉可以感知环境,而机器的视觉却很难感知环境 为了解决计算 ...
- DevExtreme学习笔记(一) DataGrid中数据提交注意事项
1.数据提交的{}数据需转化json格式 syncPost('/controller/action', { values: JSON.stringify({d:x}) }, function (res ...
- winform实现图片的滑动效果
使用winform实现图片的滑动效果(类似网站首页图片滑动切换效果),结果实现了,但是效果其实不是很理想.也许有更好的方法. Timer timerSlide = null; //当前 ...
- MySQL的ERROR 1205错误分析
一.错误发生及原因猜测 1.错误发生 在删除 t_user 表的一条数据时,Navicat 发生长时间的无响应,然后弹出一个对话框,提示:ERROR 1205: Lock wait timeout e ...
- MySQL比较时间(datetime)大小
获取时间返回的秒数:strtotime('2019-05-10 00:00:00') 遇到一个业务功能需要将当前时间与数据库中的会议开始.结束时间进行比较,记录一下,方便下次用. 用unix_time ...
- RabbitMQ实战场景(一):异步记录用户操作日志
传统的项目开发中业务流程以串行方式,执行了模块1—>模块2–>模块3 而我们知道,这个执行流程其实对于整个程序来讲是有一定的弊端的,主要有几点: (1)整个流程的执行响应等待时间比较长; ...
- JDK的安装(mac)
1.第一步安装brew 教学网址 2.用brew安装jdk. brew update brew cask install java(未翻墙时长很长,大概猴年马月两个小时) 安装完成后就可以执行JAVA ...
- vscode编辑器自定义配置
{ //删除文件确认 "explorer.confirmDelete": false, // 主题 "workbench.iconTheme": "v ...
- Tomcat启动超时设置
Tomcat启动超时设置: 处理方法: 1. 在server中找到当前Tomcat双击. 2.在视图中进行修改.(如下图:)
- kubernetes-安装Helm
Helm是什么? Helm可以管理Kubernetes应用程序-Helm Charts帮助您定义,安装和升级最复杂的Kubernetes应用程序. 下载Helm 在https://github.com ...