JAVA简单画板程序设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA期末画板实验报告
课程题目:
运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。
设计思想:
1.进行界面设计
2.进行算法实现
3.运行调试
4.总结问题
设计过程:
A.界面设计
新建一个Jframe容器,然后定义一个panel(Panel convas2),convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。
add(canvas2,BorderLayout.NORTH);
Panel canvas2 = new Panel();
添加工具按键
Panel canvas2 = new Panel();
Button btn1 = new Button("直线");
Button btn2 = new Button("椭圆");
Button btn3 = new Button("矩形");
Button btn4 = new Button("清除");
Button btn5 = new Button("画笔");
Button btn6 = new Button("橡皮");
Choice choice = new Choice();
Choice choice1 = new Choice();
canvas2.add(choice);
canvas2.add(choice1);
canvas2.add(btn1);
canvas2.add(btn2);
canvas2.add(btn3);
canvas2.add(btn4);
canvas2.add(btn5);
canvas2.add(btn6);
在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。1.画笔的大小:
choice1.add("1");
choice1.add("3");
choice1.add("5");
choice1.add("7");
choice1.add("9");
2.画笔颜色
choice.add("黑色");
choice.add("蓝色");
choice.add("红色");
choice.add("黄色");
choice.add("绿色");
3展示画板
B.算法实现
运用画板,首先要对工具栏按键和鼠标进行监听,然后对监听进行响应。运行相应程序进行画图
1.监听程序展示:
choice.addItemListener(this);
choice1.addItemListener(this);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
btn5.addActionListener(this);
btn6.addActionListener(this);
addMouseListener(this);
addMouseMotionListener(this);
2.按键监听响应
监听到按键后,判断当前会话工具
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn1))
{
a='1';
}
if(e.getSource().equals(btn2))
{
a='2';
}
if(e.getSource().equals(btn3))
{
a='3';
}
if(e.getSource().equals(btn4))
{
Graphics g = this.getGraphics();
g.clearRect(0, 0, this.getWidth(), this.getHeight());
}
if(e.getSource().equals(btn5))
{
a='4';
}
if(e.getSource().equals(btn6))
{
a='5';
}
}
定义一个变量a,对按键监听进行响应,例如当监听到btn1时赋值a=‘1’(a为char型),即当前工具为直线。但是当监听到btn4时不进行对a赋值而是直接进行清除操作,由于清除操作是对画布进行清除,不参与鼠标事件,因此可以直接执行。
3.鼠标监听响应
a.鼠标按钮按下事件,获取画图起始坐标x0,y0.
public void mousePressed(MouseEvent e)
{
x0=e.getX();
y0=e.getY();
}
b.鼠标移动事件
public void mouseMoved(MouseEvent e){
}
c.鼠标按钮松开事件,此次响应完成对直线,椭圆,矩形进行
绘制。
public void mouseReleased(MouseEvent e)
{
Graphics2D g = (Graphics2D)this.getGraphics();
size=new
BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g.setColor(b);
g.setStroke(size);
switch(a)
{
case'1':
g.drawLine(x0, y0, e.getX(), e.getY());
break;
case'2':
g.drawOval(x0, y0, e.getX() - x0, e.getY() - y0);
break;
case'3':
g.drawRect(x0, y0, e.getX() - x0, e.getY() - y0);
break;
}
}
d.鼠标进入事件:
public void mouseEntered(MouseEvent e){}
e.鼠标离开事件:
public void mouseExited(MouseEvent e){}
• f.鼠标单击事件:
public void mouseClicked(MouseEvent e){}
g.鼠标拖动事件:此次响应实现画笔(随笔画),橡皮的绘制。。
public void mouseDragged(MouseEvent e) {
Graphics2D g = (Graphics2D)this.getGraphics();