java编的画板的源代码.docx

上传人:b****7 文档编号:10009016 上传时间:2023-02-07 格式:DOCX 页数:17 大小:17.10KB
下载 相关 举报
java编的画板的源代码.docx_第1页
第1页 / 共17页
java编的画板的源代码.docx_第2页
第2页 / 共17页
java编的画板的源代码.docx_第3页
第3页 / 共17页
java编的画板的源代码.docx_第4页
第4页 / 共17页
java编的画板的源代码.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java编的画板的源代码.docx

《java编的画板的源代码.docx》由会员分享,可在线阅读,更多相关《java编的画板的源代码.docx(17页珍藏版)》请在冰豆网上搜索。

java编的画板的源代码.docx

java编的画板的源代码

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.geom.*;

importjava.io.*;

classPointimplementsSerializable

{

intx,y;

Colorcol;

inttool;

intboarder;

Point(intx,inty,Colorcol,inttool,intboarder)

{

this.x=x;

this.y=y;

this.col=col;

this.tool=tool;

this.boarder=boarder;

}

}

 

classpaintboardextendsFrameimplementsActionListener,MouseMotionListener,MouseListener,ItemListener

{

intx=-1,y=-1;

intcon=1;//画笔大小

intEcon=5;//橡皮大小

inttoolFlag=0;//toolFlag:

工具标记

//toolFlag工具对应表:

//(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形);

Colorc=newColor(0,0,0);//画笔颜色

BasicStrokesize=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细

Pointcutflag=newPoint(-1,-1,c,6,con);//截断标志

VectorpaintInfo=null;//点信息向量组

intn=1;

FileInputStreampicIn=null;

FileOutputStreampicOut=null;

ObjectInputStreamVIn=null;

ObjectOutputStreamVOut=null;

 

//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/

PaneltoolPanel;

Buttoneraser,drLine,drCircle,drRect;

Buttonclear,pen;

ChoiceColChoice,SizeChoice,EraserChoice;

Buttoncolchooser;

Label颜色,大小B,大小E;

//保存功能

ButtonopenPic,savePic;

FileDialogopenPicture,savePicture;

 

paintboard(Strings)

{

super(s);

addMouseMotionListener(this);

addMouseListener(this);

paintInfo=newVector();

/*各工具按钮及选择项*/

//颜色选择

ColChoice=newChoice();

ColChoice.add("black");

ColChoice.add("red");

ColChoice.add("blue");

ColChoice.add("green");

ColChoice.addItemListener(this);

//画笔大小选择

SizeChoice=newChoice();

SizeChoice.add("1");

SizeChoice.add("3");

SizeChoice.add("5");

SizeChoice.add("7");

SizeChoice.add("9");

SizeChoice.addItemListener(this);

//橡皮大小选择

EraserChoice=newChoice();

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13");

EraserChoice.add("17");

EraserChoice.addItemListener(this);

////////////////////////////////////////////////////

toolPanel=newPanel();

clear=newButton("清除");

eraser=newButton("橡皮");

pen=newButton("画笔");

drLine=newButton("画直线");

drCircle=newButton("画圆形");

drRect=newButton("画矩形");

openPic=newButton("打开图画");

savePic=newButton("保存图画");

colchooser=newButton("显示调色板");

//各组件事件监听

clear.addActionListener(this);

eraser.addActionListener(this);

pen.addActionListener(this);

drLine.addActionListener(this);

drCircle.addActionListener(this);

drRect.addActionListener(this);

openPic.addActionListener(this);

savePic.addActionListener(this);

colchooser.addActionListener(this);

 

颜色=newLabel("画笔颜色",Label.CENTER);

大小B=newLabel("画笔大小",Label.CENTER);

大小E=newLabel("橡皮大小",Label.CENTER);

//面板添加组件

toolPanel.add(openPic);

toolPanel.add(savePic);

toolPanel.add(pen);

toolPanel.add(drLine);

toolPanel.add(drCircle);

toolPanel.add(drRect);

toolPanel.add(颜色);toolPanel.add(ColChoice);

toolPanel.add(大小B);toolPanel.add(SizeChoice);

toolPanel.add(colchooser);

toolPanel.add(eraser);

toolPanel.add(大小E);toolPanel.add(EraserChoice);

 

toolPanel.add(clear);

//工具面板到APPLET面板

add(toolPanel,BorderLayout.NORTH);

setBounds(60,60,900,600);setVisible(true);

validate();

//dialogforsaveandload

openPicture=newFileDialog(this,"打开图画",FileDialog.LOAD);

openPicture.setVisible(false);

savePicture=newFileDialog(this,"保存图画",FileDialog.SAVE);

savePicture.setVisible(false);

openPicture.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{openPicture.setVisible(false);}

});

savePicture.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{savePicture.setVisible(false);}

});

addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{System.exit(0);}

});

 

}

publicvoidpaint(Graphicsg)

{

Graphics2Dg2d=(Graphics2D)g;

Pointp1,p2;

n=paintInfo.size();

if(toolFlag==2)

g.clearRect(0,0,getSize().width,getSize().height);//清除

for(inti=0;i

p1=(Point)paintInfo.elementAt(i);

p2=(Point)paintInfo.elementAt(i+1);

size=newBasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

 

g2d.setColor(p1.col);

g2d.setStroke(size);

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

case0:

//画笔

Line2Dline1=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);

g2d.draw(line1);

break;

case1:

//橡皮

g.clearRect(p1.x,p1.y,p1.boarder,p1.boarder);

break;

case3:

//画直线

Line2Dline2=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);

g2d.draw(line2);

break;

case4:

//画圆

Ellipse2Dellipse=newEllipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));

g2d.draw(ellipse);

break;

case5:

//画矩形

Rectangle2Drect=newRectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));

g2d.draw(rect);

break;

case6:

//截断,跳过

i=i+1;

break;

default:

}//endswitch

}//endif

}//endfor

}

 

publicvoiditemStateChanged(ItemEvente)

{

if(e.getSource()==ColChoice)//预选颜色

{

Stringname=ColChoice.getSelectedItem();

if(name=="black")

{c=newColor(0,0,0);}

elseif(name=="red")

{c=newColor(255,0,0);}

elseif(name=="green")

{c=newColor(0,255,0);}

elseif(name=="blue")

{c=newColor(0,0,255);}

}

elseif(e.getSource()==SizeChoice)//画笔大小

{

Stringselected=SizeChoice.getSelectedItem();

if(selected=="1")

{

con=1;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="3")

{

con=3;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="5")

{con=5;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="7")

{con=7;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="9")

{con=9;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

}

elseif(e.getSource()==EraserChoice)//橡皮大小

{

StringEsize=EraserChoice.getSelectedItem();

if(Esize=="5")

{Econ=5*2;}

elseif(Esize=="9")

{Econ=9*2;}

elseif(Esize=="13")

{Econ=13*2;}

elseif(Esize=="17")

{Econ=17*3;}

}

}

publicvoidmouseDragged(MouseEvente)

{

Pointp1;

switch(toolFlag){

case0:

//画笔

x=(int)e.getX();

y=(int)e.getY();

p1=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p1);

repaint();

break;

case1:

//橡皮

x=(int)e.getX();

y=(int)e.getY();

p1=newPoint(x,y,null,toolFlag,Econ);

paintInfo.addElement(p1);

repaint();

break;

default:

}

}

publicvoidmouseMoved(MouseEvente){}

publicvoidupdate(Graphicsg)

{

paint(g);

}

 

publicvoidmousePressed(MouseEvente)

{

Pointp2;

switch(toolFlag){

case3:

//直线

x=(int)e.getX();

y=(int)e.getY();

p2=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p2);

break;

case4:

//圆

x=(int)e.getX();

y=(int)e.getY();

p2=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p2);

break;

case5:

//矩形

x=(int)e.getX();

y=(int)e.getY();

p2=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p2);

break;

default:

}

}

publicvoidmouseReleased(MouseEvente)

{

Pointp3;

switch(toolFlag){

case0:

//画笔

paintInfo.addElement(cutflag);

break;

case1:

//eraser

paintInfo.addElement(cutflag);

break;

case3:

//直线

x=(int)e.getX();

y=(int)e.getY();

p3=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case4:

//圆

x=(int)e.getX();

y=(int)e.getY();

p3=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case5:

//矩形

x=(int)e.getX();

y=(int)e.getY();

p3=newPoint(x,y,c,toolFlag,con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

default:

}

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==pen)//画笔

{toolFlag=0;}

if(e.getSource()==eraser)//橡皮

{toolFlag=1;}

if(e.getSource()==clear)//清除

{

toolFlag=2;

paintInfo.removeAllElements();

repaint();

}

if(e.getSource()==drLine)//画线

{toolFlag=3;}

if(e.getSource()==drCircle)//画圆

{toolFlag=4;}

if(e.getSource()==drRect)//画矩形

{toolFlag=5;}

if(e.getSource()==colchooser)//调色板

{

ColornewColor=JColorChooser.showDialog(this,"调色板",c);

c=newColor;

}

if(e.getSource()==openPic)//打开图画

{

openPicture.setVisible(true);

if(openPicture.getFile()!

=null)

{

inttempflag;

tempflag=toolFlag;

toolFlag=2;

repaint();

try{

paintInfo.removeAllElements();

Filefilein=newFile(openPicture.getDirectory(),openPicture.getFile());

picIn=newFileInputStream(filein);

VIn=newObjectInputStream(picIn);

paintInfo=(Vector)VIn.readObject();

VIn.close();

repaint();

toolFlag=tempflag;

}

catch(ClassNotFoundExceptionIOe2)

{

repaint();

toolFlag=tempflag;

System.out.println("cannotreadobject");

}

catch(IOExceptionIOe)

{

repaint();

toolFlag=tempflag;

System.out.println("cannotreadfile");

}

}

}

if(e.getSource()==savePic)//保存图画

{

savePicture.setVisible(true);

try{

Filefileout=newFile(savePicture.getDirectory(),savePicture.getFile());

picOut=newFileOutputStream(fileout);

VOut=newObjectOutputStream(picOut);

VOut.writeObject(paintInfo);

VOut.close();

}

catch(IOExceptionIOe)

{

System.out.println("cannotwriteobject");

}

 

}

}

}//endpaintboard

publicclasspb

{

publicstaticvoidmain(Stringargs[])

{newpaintboard("画图程序");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1