JAVA实验报告简单绘图程序Word格式.docx
《JAVA实验报告简单绘图程序Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告简单绘图程序Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
JToolBartool=newWinToolBar((windowsPaint)paintWin);
tool.setBounds(0,0,1000,30);
tool.setVisible(true);
JFrameframe=newJFrame();
frame.setLayout(null);
frame.setVisible(true);
frame.setBounds(0,0,1000,1000);
frame.add(tool);
frame.add(paintWin);
}
}
test.java
importjava.awt.GradientPaint;
importjava.lang.reflect.Constructor;
importbase.GrapicsElem;
importbase.Rect;
publicclasstestfractor{
/**
*@throwsClassNotFoundException
publicstaticvoidmain(String[]args)throwsClassNotFoundException{
GrapicsElemGe=newRect();
System.out.println(Ge.getClass().getName());
Class<
?
>
demo1=null;
Class<
demo2=null;
Class<
demo3=null;
try{
//一般尽量采用这种形式
demo1=Class.forName("
base.Rect"
con=demo1.getSuperclass();
System.out.println(con.getName());
demo2=Class.forName("
base.GrapicsElem"
suns[]=demo2.getInterfaces();
for(inti=0;
i<
suns.length;
i++){
System.out.println(suns[i].getName());
}
System.out.println(con.length);
//GrapicsElemgg=(GrapicsElem)con[0].newInstance();
System.out.println(con[0]);
System.out.println(con[1]);
System.out.println(con[2]);
}catch(Exceptione){
e.printStackTrace();
}
demo2=newRect().getClass();
demo3=Rect.class;
System.out.println("
类名称"
+demo1.getName());
+demo2.getName());
+demo3.getName());
GrapicsElem.java
packagebase;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.awt.Point;
publicabstractclassGrapicsElem{
Pointstart;
Pointend;
privateColorcolor;
publicColorgetColor(){
returncolor;
publicvoidsetColor(Colorcolor){
this.color=color;
publicvoidsetStart(Pointstart){
this.start=start;
publicvoidsetEnd(Pointend){
this.end=end;
publicabstractvoiddoMousePress(Pointp);
publicabstractvoiddoMouseDrag(Pointp);
publicabstractvoiddoMouseRelease(Pointp);
publicabstractvoiddraw(Graphicsg);
Line.java
importjava.util.ArrayList;
publicclassLineextendsGrapicsElem{
ArrayList<
Point>
track;
publicLine(){
track=newArrayList<
();
@Override
publicvoiddraw(Graphicsg){
track.size()-1;
Pointcur=track.get(i);
Pointnext=track.get(i+1);
g.drawLine(cur.x,cur.y,next.x,next.y);
privatevoidAddPoint(Pointp){
track.add(p);
publicvoiddoMousePress(Pointp){
AddPoint(p);
publicvoiddoMouseDrag(Pointp){
publicvoiddoMouseRelease(Pointp){
Rect.java
publicclassRectextendsGrapicsElem{
intx,y,width,height;
g.drawRect(getX(),getY(),getWidth(),getHeight());
super.setStart(p);
super.setEnd(p);
publicintgetX(){
returnMath.min(start.x,end.x);
publicintgetY(){
returnMath.min(start.y,end.y);
publicintgetWidth(){
returnMath.abs(start.x-end.x);
publicintgetHeight(){
returnMath.abs(start.y-end.y);
Circle.java
publicclassCircleextendsRect{
g.drawOval(getX(),getY(),getWidth(),getHeight());
windowsPaint.java
packagewinpaint;
importjava.awt.BasicStroke;
importjava.awt.Button;
importjava.awt.Font;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.event.ActionEvent;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.MouseMotionListener;
importjava.io.File;
importjava.io.IOException;
importjava.nio.Buffer;
importjava.util.BitSet;
importjava.util.List;
importjava.awt.geom.*;
importjava.awt.image.BufferedImage;
importjavax.imageio.ImageIO;
importjavax.swing.ImageIcon;
importjavax.swing.JLabel;
importbase.Circle;
importbase.Line;
publicclasswindowsPaintextendsJPanel
implementsMouseListener,MouseMotionListener
{
Stringcommand="
矩形"
;
List<
GrapicsElem>
Lg=newArrayList();
GrapicsElemcur;
JLabellabel;
publicwindowsPaint(Stringtitle){
init();
privatevoidinit(){
addMouseListener(this);
addMouseMotionListener(this);
}
/**
*可以使用反射去掉判断语句、
*Class<
g=Class.forName("
*g.newInstance();
*@return
*/
privateGrapicsElemnewInstance(){
command=WinToolBar.Command;
if(command.equals("
)){
returnnewRect();
}elseif(command.equals("
圆形"
returnnewCircle();
线"
returnnewLine();
}
returnnull;
@Override
publicvoidpaint(Graphicsg){
//TODOAuto-generatedmethodstub
super.paint(g);
Graphics2Dg2d=(Graphics2D)g;
//g2d.setColor(cur.getColor());
//System.out.println(cur.getColor());
g2d.setStroke(newBasicStroke(10.0f));
for(inti=0;
Lg.size();
GrapicsElemge=Lg.get(i);
ge.draw(g);
//@Override
//publicvoidrepaint(){
////TODOAuto-generatedmethodstub
////TODOAuto-generatedmethodstub
////
//super.repaint();
////Threadthread=newThread(newRunnable(){
////@Override
////publicvoidrun(){
//////TODOAuto-generatedmethodstub
////try{
////SaveToFile();
////}catch(IOExceptione){
//////TODOAuto-generatedcatchblock
////e.printStackTrace();
////}
////}
////});
////thread.start();
////
////ImageIconbg=newImageIcon("
tmp.jpg"
////if(bg!
=null){
////if(label!
=null)
////this.remove(label);
////label=newJLabel(bg);
////label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight());
////this.add(label);
////super.repaint();
////}
////
//}
privatevoidSaveToFile()throwsIOException{
BufferedImagebimg=newBufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
Graphics2Dg2d=bimg.createGraphics();
this.paint(g2d);
ImageIO.write(bimg,"
jpg"
newFile("
));
publicvoidmousePressed(MouseEvente){
Pointp=newPoint(e.getX(),e.getY());
cur=newInstance();
cur.doMousePress(p);
Lg.add(cur);
publicvoidmouseDragged(MouseEvente){
cur.doMouseDrag(p);
repaint();
publicvoidmouseReleased(MouseEvente){
cur.doMouseRelease(p);
publicvoidmouseMoved(MouseEvente){
publicvoidmouseClicked(MouseEvente){
publicvoidmouseEntered(MouseEvente){
publicvoidmouseExited(MouseEvente){
WinToolBar.java
importjava.awt.event.ItemEvent;
importjava.awt.event.ItemListener;
importjavax.swing.JComboBox;
importjavax.swing.JSeparator;
publicclassWinToolBarextendsJToolBarimplementsActionListener{
publicstaticStringCommand="
JButtonbtn1,btn2,btn3;
//windowsPaintwinp;
publicWinToolBar(windowsPaintwinP){
btn1=newJButton("
btn2=newJButton("
btn3=newJButton("
this.add(btn1);
this.add(btn2);
this.add(btn3);
btn1.addActionListener((ActionListener)this);
btn2.addActionListener((ActionListener)this);
btn3.addActionListener((ActionListener)this);
//this.winp=winP;
JComboBoxcom=newJComboBox();
com.addItem("
红色"
蓝色"
黑色"
com.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEvente){
//TODOAuto-gen