已有101人关注
鼠标画不出图片
发表在Java图书答疑 2017-09-19 《Java项目开发实战入门》第1章 一起来画画
是否精华
版块置顶:

 package com.mr 

.draw;//类所在的包名

import javax.swing.JFrame;   //引入窗体类

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage; 

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
/*
 * 画图主窗体
 */

public class DrawPictureFrame extends JFrame{
/**
 * 构建方法
 */
BufferedImage image=new BufferedImage(570,390,BufferedImage.TYPE_INT_BGR);
Graphics gs=image.getGraphics(); //获取图像的绘图对象
Graphics2D g=(Graphics2D)gs;//将绘图对象转换为Graphics2D类型
DrawPictureCanvas canvas=new DrawPictureCanvas();//创建画布对象
Color foreColor=Color.BLACK;//定义前景色
Color backgroundColor=Color.WHITE;//定义背景色

int x=-1;
int y=-1;
boolean rubber=false;//橡皮标志变量
/*
 * 构建方法,添加组件的初始化方法
 */
public DrawPictureFrame() {
setResizable(false); //窗体不能改变大小
setTitle("画图程序");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭则停止程序
setBounds(500,100,574,460);//设置窗口位置和宽高
init();//组件初始化
addListener();
}//DrawPictureFrame()结束
/**
 * 程序运行方法
 * @param args-运行时参数,本程序用不到
 */
private void init() {
g.setColor(backgroundColor);//用背景色设置绘图对象的颜色
g.fillRect(0, 0, 570, 390);//用背景色填充这个背景
    g.setColor(foreColor);//用前景色设置绘图对象颜色
    canvas.setImage(image);
    getContentPane().add(canvas);//将画布添加到窗体容器默认布局的中部位置
}//intit()结束

private void addListener() {
//画板添加鼠标移动事件监听
canvas.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(final MouseEvent e) {
if(x>0 && y>0) {//如果x和y存在鼠标记录
if(rubber) {//橡皮标识为true,表示使用橡皮
g.setColor(backgroundColor);
g.fillRect(x, y,10, 10);
}
else {
g.drawLine(x, y,e.getX(),e.getY());
}//if结束
x=e.getX();
y=e.getY();
canvas.repaint();//更新画布
}
}
});
canvas.addMouseListener(new MouseAdapter()
{
public void mouseReleased(final MouseEvent arg0) {
x=-1;
y=-1;
}
});
}

public static void main(String args[]) {
DrawPictureFrame frame=new DrawPictureFrame();//创建窗体对象
frame.setVisible(true);//让窗体可见
}//main()结束
}//DrawPictureFrame类结束 


分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-09-20
沙发

检查DrawPictureCanvas这个类的代码是否与书上完全一致。

coming
学分:66 LV3
2017-09-21
板凳

根号申 发表于2017-09-20 09:10

检查DrawPictureCanvas这个类的代码是否与书上完全一致。

恩谢谢

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照