JAVA实验报告简单绘图程序.docx
- 文档编号:3529807
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:17.78KB
JAVA实验报告简单绘图程序.docx
《JAVA实验报告简单绘图程序.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告简单绘图程序.docx(16页珍藏版)》请在冰点文库上搜索。
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{ ArrayList 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="矩形"; List 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 报告 简单 绘图 程序