




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三绘制图形一、实验目的学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面 框架通过实验熟悉 swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。二、实验内容设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一 个简单易操作的用户界面(包括菜单、按钮等组件)。编写的程序要求能够实现保存和读取 的功能。三、实验代码Main.javaimport import import import importjava.awt.BorderLayout;
2、java.awt.event.ActionListener;javax.swing.JButton;javax.swing.JFrame;javax.swing.JPanel;import import importpublic/*javax.swing.JToolBar;winpaint.WinToolBar;winpaint.windowsPaint; class Main param args*/public static void main(String口 args) / TODOAuto-generated method stubJPanel paintWin =new window
3、sPaint("画图");JToolBar tool =null );true );paintWin.setBounds(0, 30, 1000, 1000);paintWin.setLayout(paintWin.setVisible(new WinToolBar(windowsPaint)paintWin);tool.setBounds(0, 0, 1000, 30);tool.setVisible(JFrame frame = frame.setLayout( frame.setVisible(true );new JFrame();null );true );fra
4、me.setBounds(0, 0, 1000, 1000);frame.add(tool);frame.add(paintWin);test.javaimport java.awt.GradientPaint;import java.lang.reflect.Constructor;import base.GrapicsElem;import base.Rect;public class testfractor /*param argsthrows ClassNotFoundException*/public static void main(String口 args) throws Cla
5、ssNotFoundException / TODOAuto-generated method stubGrapicsElem Ge = new Rect();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();
6、System.out.println(con.getName();demo2 = Class.forName("base.GrapicsElem");Class<?> suns = demo2.getInterfaces();for (int i = 0; i < suns.length; i+) System.out.println(sunsi.getName();System.out.println(con.length);/ GrapicsElem gg = (GrapicsElem)con0.newInstance();System.out.pri
7、ntln(con0);System.out.println(con1);System.out.println(con2);catch(Exception e) e.printStackTrace();demo2=new Rect().getClass();demo3=Rect.class;System.out.println("System.out.println("System.out.println("类名称类名称类名称"+demo1.getName();"+demo2.getName();"+demo3.getName();Gr
8、apicsElem.javapackage base;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;publicabstract class GrapicsElem Point start ;Point end;private Color color ;public Color getColor() return color ;public void setColor(Color color) this . color = color; publicthisvoid setStart(Point sta
9、rt) .start = start;public void setEnd(Point end) this . end = end; publicabstractvoiddoMousePress(Point p);publicabstractvoiddoMouseDrag(Point p);publicabstractvoiddoMouseRelease(Point p);publicabstractvoiddraw(Graphics g );Line.java package base; import java.awt.Graphics; import java.awt.Point; imp
10、ort java.util.ArrayList;public class Line extends GrapicsElem ArrayList<Point> track ;public Line()track = new ArrayList<Point>();Overridepublic void draw(Graphics g) for ( int i = 0; i < track .size()-1; i+) Point cur = track .get(i);Point next = track .get(i+1);g.drawLine(cur.x, cur
11、. y, next. x, next. y); private void AddPoint(Point p) track .add(p); Override publicvoid doMousePress(Point p) / TODOAuto-generated method stub AddPoint(p); Override public void doMouseDrag(Point p) / TODOAuto-generated method stub AddPoint(p); Override publicvoid doMouseRelease(Point p) / TODOAuto
12、-generated method stub AddPoint(p); Rect.java package base; import java.awt.Graphics; import java.awt.Point; public class Rect extends GrapicsElem int x, y, width , height ;Override public void draw(Graphics g) / TODOAuto-generated method stub g.drawRect(getX(), getY(), getWidth(), getHeight(); Over
13、ride public void doMousePress(Point p) super .setStart(p); super .setEnd(p); Override public void doMouseDrag(Point p) super .setEnd(p); Override public void doMouseRelease(Point p) super .setEnd(p);public int getX() return Math. min (start.x, end.x); public int getY() return Math. min (start.y, end
14、.y); public int getWidth() return Math. abs (start.x-end.x); public int getHeight() return Math. abs (start.y-end.y);Circle.javapackage base;import java.awt.Graphics;public class Circle extends Rect Overridepublic void draw(Graphics g) / TODOAuto-generated method stub g.drawOval(getX(), getY(), getW
15、idth(), getHeight();windowsPaint.javapackage winpaint;import java.awt.BasicStroke;import java.awt.Button;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.
16、ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.io.File;import java.io.IOException;import java.nio.Buffer;import java.util.ArrayList;import java.util.BitSet;import java.util.List;import java.awt.geom.*;import j
17、ava.awt.image.Bufferedlmage;import javax.imageio.ImagelO;import javax.swing.Imagelcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JToolBar;import base.Circle;import base.GrapicsElem;import base.Line;import base.Rect;impo
18、rt java.awt.BorderLayout;public class windowsPaint extends JPanelimplements MouseListener, MouseMotionListener String command ="矩形"List<GrapicsElem> Lg = new ArrayList();GrapicsElem cur;JLabel label;public windowsPaint(String title) init();private void init() addMouseListener(this);/
19、*addMouseMotionListener(this);可以使用反射去掉判断语句、* Class<?> g = Class.forName("base.Rect");* g.newInstance();* return*/private GrapicsElem newInstance()command = WinToolBar.Command;if(command.equals("矩形")return new Rect();else if(command.equals("圆形")return new Circle();
20、else if(command.equals("线")return new Line();return null;/Overridepublic void paint(Graphics g) / TODO Auto-generated method stub super.paint(g);Graphics2D g2d = (Graphics2D) g;g2d.setC010r(cur.getColor();System.out.println(cur.getColor();g2d.setStroke(new BasicStroke(10.0f);for (int i = 0
21、;i< Lg.size(); i+) GrapicsElem ge = Lg.get(i); ge.draw(g);Overridepublic void repaint() / TODO Auto-generated method stub/ TODO Auto-generated method stub/ IlliIlli Illi / / / / / / / / / / / super.repaint();Thread thread = new Thread(new Runnable() Override public void run() / TODO Auto-generate
22、d method stub trySaveToFile(); catch (lOException e) / TODO Auto-generated catch block e.printStackTrace(););thread.start();/Imageicon bg = new ImageIcon("tmp.jpg");/if(bg!=null)/if(label!=null)/this.remove(label);/label = new JLabel(bg);/label.setBounds(0,0,bg.geticonWidth(),bg.getIconHei
23、ght();/this.add(label);/super.repaint();/private void SaveToFile() throws lOException / TODO Auto-generated method stubBufferedImage bimg = new BufferedImage(this.getWidth(),this.getHeight(), BufferedImage.TYPE_3BYTE_BGR);Graphics2D g2d = bimg.createGraphics();this.paint(g2d);ImageIO.write(bimg, &qu
24、ot;jpg", new File("tmp.jpg");Overridepublic void mousePressed(MouseEvent e) Point p = new Point(e.getX(),e.getY(); cur = newInstance();cur.doMousePress(p);Lg.add(cur);Overridepublic void mouseDragged(MouseEvent e) Point p = new Point(e.getX(),e.getY();cur.doMouseDrag(p);repaint();Over
25、ridepublic void mouseReleased(MouseEvent e) Point p = new Point(e.getX(),e.getY();cur.doMouseRelease(p); repaint();Overridepublic void mouseMoved(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseClicked(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseEn
26、tered(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubWinToolBar.java package winpaint; import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import ja
27、va.awt.event.ItemListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JSeparator;import javax.swing.JToolBar;public class WinToolBar extends JToolBar implements ActionListener public static String Command ="矩形"JButton btn1,btn2,btn3;/windowsPaint winp;public WinToolBar(windowsPaint winP ) btn1 = new JButton("矩形");btn2 = new JButton("圆形");btn3 = new JButton("线");this.add(btn1);this.add(btn2);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京装饰装修合同范本
- 慢阻肺护理查房
- 小班爱眼护眼活动总结
- 药物渗漏不良事件分析
- 2025年人力资源管理试题含答案
- 膜性肾病的临床护理
- 医学人卫教材配套建设要点
- 人音版小学音乐五年级上册《外婆的澎湖湾》教学设计
- 七年级英语语法总结模版
- 教室卫生大扫除活动总结模版
- 高校学生资助诚信教育主题活动
- 跨国公司海外人力资源外包与派遣管理合同
- LNG 加气站防雷安全培训与应急演练记录 202505
- 普惠金融专员试题及答案
- 【课件】认识民法典+课件统编版道德与法治七年级下册
- 2025年航天知识竞赛题库及答案
- 2025年人教版小学小升初科学模拟试卷(含答案解析)
- 肠易激综合征中西医结合诊疗专家共识(2025)解读课件
- 《金属疲劳与断裂》课件
- 2025年《民法典》应知应会知识竞赛题库(含各题型)
- 中国肿瘤营养治疗指南
评论
0/150
提交评论