JAVA实验报告简单绘图程序.docx

上传人:b****2 文档编号:3529807 上传时间:2023-05-06 格式:DOCX 页数:16 大小:17.78KB
下载 相关 举报
JAVA实验报告简单绘图程序.docx_第1页
第1页 / 共16页
JAVA实验报告简单绘图程序.docx_第2页
第2页 / 共16页
JAVA实验报告简单绘图程序.docx_第3页
第3页 / 共16页
JAVA实验报告简单绘图程序.docx_第4页
第4页 / 共16页
JAVA实验报告简单绘图程序.docx_第5页
第5页 / 共16页
JAVA实验报告简单绘图程序.docx_第6页
第6页 / 共16页
JAVA实验报告简单绘图程序.docx_第7页
第7页 / 共16页
JAVA实验报告简单绘图程序.docx_第8页
第8页 / 共16页
JAVA实验报告简单绘图程序.docx_第9页
第9页 / 共16页
JAVA实验报告简单绘图程序.docx_第10页
第10页 / 共16页
JAVA实验报告简单绘图程序.docx_第11页
第11页 / 共16页
JAVA实验报告简单绘图程序.docx_第12页
第12页 / 共16页
JAVA实验报告简单绘图程序.docx_第13页
第13页 / 共16页
JAVA实验报告简单绘图程序.docx_第14页
第14页 / 共16页
JAVA实验报告简单绘图程序.docx_第15页
第15页 / 共16页
JAVA实验报告简单绘图程序.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA实验报告简单绘图程序.docx

《JAVA实验报告简单绘图程序.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告简单绘图程序.docx(16页珍藏版)》请在冰点文库上搜索。

JAVA实验报告简单绘图程序.docx

JAVA实验报告简单绘图程序

实验三绘制图形

一、实验目的

学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面框架通过实验熟悉swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。

二、实验内容

设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。

编写的程序要求能够实现保存和读取的功能。

三、实验代码

Main.java

importjava.awt.BorderLayout;

importjava.awt.event.ActionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

importjavax.swing.JToolBar;

importwinpaint.WinToolBar;

importwinpaint.windowsPaint;

publicclassMain{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

JPanelpaintWin=newwindowsPaint("画图");

paintWin.setBounds(0,30,1000,1000);

paintWin.setLayout(null);

paintWin.setVisible(true);

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{

/**

*@paramargs

*@throwsClassNotFoundException

*/

publicstaticvoidmain(String[]args)throwsClassNotFoundException{

//TODOAuto-generatedmethodstub

GrapicsElemGe=newRect();

System.out.println(Ge.getClass().getName());

Class

>demo1=null;

Class

>demo2=null;

Class

>demo3=null;

try{

//一般尽量采用这种形式

demo1=Class.forName("base.Rect");

Class

>con=demo1.getSuperclass();

System.out.println(con.getName());

demo2=Class.forName("base.GrapicsElem");

Class

>suns[]=demo2.getInterfaces();

for(inti=0;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());

System.out.println("类名称"+demo2.getName());

System.out.println("类名称"+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

packagebase;

importjava.awt.Graphics;

importjava.awt.Point;

importjava.util.ArrayList;

publicclassLineextendsGrapicsElem{

ArrayListtrack;

publicLine(){

track=newArrayList();

}

@Override

publicvoiddraw(Graphicsg){

for(inti=0;i

Pointcur=track.get(i);

Pointnext=track.get(i+1);

g.drawLine(cur.x,cur.y,next.x,next.y);

}

}

privatevoidAddPoint(Pointp){

track.add(p);

}

@Override

publicvoiddoMousePress(Pointp){

//TODOAuto-generatedmethodstub

AddPoint(p);

}

@Override

publicvoiddoMouseDrag(Pointp){

//TODOAuto-generatedmethodstub

AddPoint(p);

}

@Override

publicvoiddoMouseRelease(Pointp){

//TODOAuto-generatedmethodstub

AddPoint(p);

}

}

Rect.java

packagebase;

importjava.awt.Graphics;

importjava.awt.Point;

publicclassRectextendsGrapicsElem{

intx,y,width,height;

@Override

publicvoiddraw(Graphicsg){

//TODOAuto-generatedmethodstub

g.drawRect(getX(),getY(),getWidth(),getHeight());

}

@Override

publicvoiddoMousePress(Pointp){

super.setStart(p);

super.setEnd(p);

}

@Override

publicvoiddoMouseDrag(Pointp){

super.setEnd(p);

}

@Override

publicvoiddoMouseRelease(Pointp){

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

packagebase;

importjava.awt.Graphics;

publicclassCircleextendsRect{

@Override

publicvoiddraw(Graphicsg){

//TODOAuto-generatedmethodstub

g.drawOval(getX(),getY(),getWidth(),getHeight());

}

}

windowsPaint.java

packagewinpaint;

importjava.awt.BasicStroke;

importjava.awt.Button;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.Image;

importjava.awt.Point;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjava.awt.event.MouseMotionListener;

importjava.io.File;

importjava.io.IOException;

importjava.nio.Buffer;

importjava.util.ArrayList;

importjava.util.BitSet;

importjava.util.List;

importjava.awt.geom.*;

importjava.awt.image.BufferedImage;

importjavax.imageio.ImageIO;

importjavax.swing.ImageIcon;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JToolBar;

importbase.Circle;

importbase.GrapicsElem;

importbase.Line;

importbase.Rect;

importjava.awt.BorderLayout;

publicclasswindowsPaintextendsJPanel

implementsMouseListener,MouseMotionListener

{

Stringcommand="矩形";

ListLg=newArrayList();

GrapicsElemcur;

JLabellabel;

publicwindowsPaint(Stringtitle){

init();

}

privatevoidinit(){

addMouseListener(this);

addMouseMotionListener(this);

}

/**

*可以使用反射去掉判断语句、

*Class

>g=Class.forName("base.Rect");

*g.newInstance();

*@return

*/

privateGrapicsElemnewInstance(){

command=WinToolBar.Command;

if(command.equals("矩形")){

returnnewRect();

}elseif(command.equals("圆形")){

returnnewCircle();

}elseif(command.equals("线")){

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;i

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{

//TODOAuto-generatedmethodstub

BufferedImagebimg=newBufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_3BYTE_BGR);

Graphics2Dg2d=bimg.createGraphics();

this.paint(g2d);

ImageIO.write(bimg,"jpg",newFile("tmp.jpg"));

}

@Override

publicvoidmousePressed(MouseEvente){

Pointp=newPoint(e.getX(),e.getY());

cur=newInstance();

cur.doMousePress(p);

Lg.add(cur);

}

@Override

publicvoidmouseDragged(MouseEvente){

Pointp=newPoint(e.getX(),e.getY());

cur.doMouseDrag(p);

repaint();

}

@Override

publicvoidmouseReleased(MouseEvente){

Pointp=newPoint(e.getX(),e.getY());

cur.doMouseRelease(p);

repaint();

}

@Override

publicvoidmouseMoved(MouseEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidmouseClicked(MouseEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidmouseEntered(MouseEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidmouseExited(MouseEvente){

//TODOAuto-generatedmethodstub

}

}

WinToolBar.java

packagewinpaint;

importjava.awt.Color;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.ItemEvent;

importjava.awt.event.ItemListener;

importjavax.swing.JButton;

importjavax.swing.JComboBox;

importjavax.swing.JSeparator;

importjavax.swing.JToolBar;

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.addItem("蓝色");

com.addItem("黑色");

com.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//TODOAuto-gen

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2