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 手绘窗口的更多相关文章

  1. learning java AWT 绝对定位

    import javax.swing.*; import java.awt.*; public class NullLayoutTest { Frame f = new Frame("测试窗 ...

  2. learning java AWT 布局管理器 GridBagLayout

    在GridBagLayout布局管理器中,一个组件可以跨越一个或多个网格,并可以设置各网格的大小互不相关. import java.awt.*; public class GridBagTest { ...

  3. learning java AWT Pannel

    import java.awt.*; public class PanelTest { public static void main(String[] args) { var f = new Fra ...

  4. learning java AWT 剪贴板 传递文本

    import javax.swing.*; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.dat ...

  5. learning java AWT 画图

    import javax.swing.*; import java.awt.*; import java.util.Random; public class SimpleDraw { private ...

  6. learning java AWT 右键菜单

    import java.awt.*; import java.awt.event.*; public class SimpleMenu { private Frame f = new Frame(&q ...

  7. learning java AWT MenuBar Menu MenuItem菜单

    import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java ...

  8. learning java AWT widowEvent and MouseEvent

    import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import jav ...

  9. learning java AWT EventQs

    import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Ac ...

随机推荐

  1. Arduino 计算机视觉系统概述

    计算机视觉系统概述 计算机视觉系统是最近比较热门的研究领域,今天开始给大家介绍下计算机视觉相关的知识. 视觉是人的所有感官中最敏感的一种,人的视觉可以感知环境,而机器的视觉却很难感知环境 为了解决计算 ...

  2. DevExtreme学习笔记(一) DataGrid中数据提交注意事项

    1.数据提交的{}数据需转化json格式 syncPost('/controller/action', { values: JSON.stringify({d:x}) }, function (res ...

  3. winform实现图片的滑动效果

    使用winform实现图片的滑动效果(类似网站首页图片滑动切换效果),结果实现了,但是效果其实不是很理想.也许有更好的方法.         Timer timerSlide = null; //当前 ...

  4. MySQL的ERROR 1205错误分析

    一.错误发生及原因猜测 1.错误发生 在删除 t_user 表的一条数据时,Navicat 发生长时间的无响应,然后弹出一个对话框,提示:ERROR 1205: Lock wait timeout e ...

  5. MySQL比较时间(datetime)大小

    获取时间返回的秒数:strtotime('2019-05-10 00:00:00') 遇到一个业务功能需要将当前时间与数据库中的会议开始.结束时间进行比较,记录一下,方便下次用. 用unix_time ...

  6. RabbitMQ实战场景(一):异步记录用户操作日志

    传统的项目开发中业务流程以串行方式,执行了模块1—>模块2–>模块3 而我们知道,这个执行流程其实对于整个程序来讲是有一定的弊端的,主要有几点: (1)整个流程的执行响应等待时间比较长; ...

  7. JDK的安装(mac)

    1.第一步安装brew 教学网址 2.用brew安装jdk. brew update brew cask install java(未翻墙时长很长,大概猴年马月两个小时) 安装完成后就可以执行JAVA ...

  8. vscode编辑器自定义配置

    { //删除文件确认 "explorer.confirmDelete": false, // 主题 "workbench.iconTheme": "v ...

  9. Tomcat启动超时设置

    Tomcat启动超时设置: 处理方法: 1. 在server中找到当前Tomcat双击. 2.在视图中进行修改.(如下图:)

  10. kubernetes-安装Helm

    Helm是什么? Helm可以管理Kubernetes应用程序-Helm Charts帮助您定义,安装和升级最复杂的Kubernetes应用程序. 下载Helm 在https://github.com ...