程序设计技术课程设计,程序设计课件

  程序设计技术课程设计,程序设计课件

  课程名称:设计模式课程设计

  设计题目:基于设计模式的绘图程序设计

  1、需求分析该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。

  1.1 、设计模式要求在软件的设计中请使用到三种以上设计模式。

  1.2、 画图基本要求能实现基本图形的绘制功能,包括实现绘制直线、三角形和圆形,并有装饰;修改绘图笔颜色。

  1.3、 画图高级要求实现图形的操作(如选取、移动、放大、缩小、删除、改变颜色、修变线形等)和持久化(利用文件或利用数据库)。

  2、实现的效果2.1、 绘制基本的图形(三角形、圆形、矩形)

  2.2 、绘制带有颜色的图形

  2.3、 使用装饰(图形组合展示)

  2.4、 带有颜色的图形组合

  2.5、 使用桥接模式绘制简单图形

  3、项目的目录结构

  4、源代码这里只给出界面的代码、总的代码过多、放不下。我上传资源了、可以免费下载参考学习

  包裹界面;

  导入Java。awt。颜色;

  导入Java。awt。字体;

  导入Java。awt。图形;

  导入Java。awt。事件。动作事件;

  导入Java。awt。事件。动作监听器;

  导入Java。awt。事件。鼠标事件;

  导入Java。awt。事件。鼠标监听器;

  导入javax。挥棒。边境工厂;

  导入javax。挥棒。jbutton

  导入javax。挥棒。jcolorchooser

  导入javax。挥棒。jfile选择器;

  导入javax。挥棒。jframe

  导入javax。挥棒。jpanel

  导入javax。挥棒。jtextfield

  导入javax。挥棒。文件选择器。filenameextensionfilter

  进口桥接模式BigPen。

  进口桥接模式。小;

  进口桥接模式。大;

  进口桥接模式。尺寸;

  进口桥接模式。钢笔;

  进口简单工厂模式。画;

  进口简单工厂模式。工厂;

  进口装饰模式conpovert . com

  进口装饰模式。椭圆形;

  进口装饰模式Oval _ Oval

  进口装饰模式100 .建议

  进口装饰模式Rec _ Rec

  进口装饰模式105 . Tri

  进口装饰模式。三三;

  公共类大型机扩展JFrame {

  私有JPanel down panel=new JPanel();

  私彩c=颜色.黑色

  int x=0;

  int y=0;

  int x1=0;

  int y1=0;

  字符串名称;

  字符串名称2;

  int flag=0;

  强有力的

  钢笔钢笔;

  file[]selected files=null;

  int文件索引=0;

  int width=200

  int height=200

  公共大型机(){

  initUI();

  显示框架();

  }

  //初始化界面显示组件

  私有void initUI() {

  final JTextField jtfGrap=new JTextField(图形);

  final JTextField jtf modi=new JTextField(装饰);

  final JTextField jtfStra=new JTextField(桥接);

  final JButton jbtColo=new JButton(颜色);

  final JButton jbtTria=new JButton(三角形);

  final JButton jbtRoun=new JButton(圆形);

  final JButton jbtRect=new JButton(矩形);

  final JButton jbtClea=new JButton(清空);

  最终jbt按钮jbt mod 1=新jbt按钮(三角形);

  最终jbt按钮jbt mod 2=新jbt按钮(圆形);

  最终jbt按钮jbt mod 3=新jbt按钮(矩形);

  最终jbt按钮jbt mod 4=新jbt按钮(移动);

  最终jbt按钮jbt str 1=新jbt按钮(粗红毛笔);

  最终jbt按钮jbt str 2=新jbt按钮(粗绿毛笔);

  最终jbt按钮jbt str 3=新jbt按钮(细红毛笔);

  最终JButton jbtStr4=新jbt按钮(细绿毛笔);

  final JPanel jp panel 1=new JPanel();

  final JPanel jp panel 2=new JPanel();

  final JPanel jp panel 3=new JPanel();

  jbtColo.setBounds(115,10,90,20);

  jbtColo.setForeground(新颜色(153,217,234));

  jbt colo . setcontentareaffilled(false);

  jbtColo.setFont(新字体(黑体,字体。粗体,14));

  jtfGrap.setBounds(15,5,40,30);

  jtfGrap.setFont(新字体(黑体,字体。粗体,14));

  jtfgrap。设置边框(空);

  jtfgrap。设置可编辑(false);

  jtfgrap。seto paque(假);

  jbtTria.setBounds(15,35,90,40);

  jbtTria.setForeground(新颜色(153,217,234));

  jbt tria。setcontentareaffilled(false);

  jbtTria.setFont(新字体(黑体,字体。粗体,14));

  jbtRoun.setBounds(115,35,90,40);

  jbtRoun.setForeground(新颜色(153,217,234));

  JB troun。setcontentareaffilled(false);

  jbtRoun.setFont(新字体(黑体,字体。粗体,14));

  jbtRect.setBounds(15,85,90,40);

  jbtRect.setForeground(新颜色(153,217,234));

  JB trect。setcontentareaffilled(false);

  jbtRect.setFont(新字体(黑体,字体。粗体,14));

  jtfModi.setBounds(15,5,40,30);

  jtfModi.setFont(新字体(黑体,字体。粗体,14));

  jtf莫迪。设置边框(空);

  jtf莫迪。设置可编辑(false);

  jtf莫迪。seto paque(假);

  jbtMod1.setBounds(15,35,90,40);

  jbtMod1.setForeground(新颜色(153,217,234));

  jbt mod 1。setcontentareaffilled(false);

  jbtMod1.setFont(新字体(黑体,字体。粗体,14));

  jbtMod2.setBounds(115,35,90,40);

  jbtMod2.setForeground(新颜色(153,217,234));

  jbt mod 2。setcontentareaffilled(false);

  jbtMod2.setFont(新字体(黑体,字体。粗体,14));

  jbtMod3.setBounds(15,85,90,40);

  jbtMod3.setForeground(新颜色(153,217,234));

  jbt mod 3。setcontentareaffilled(false);

  jbtMod3.setFont(新字体(黑体,字体。粗体,14));

  jbtMod4.setBounds(115,85,90,40);

  jbtMod4.setForeground(新颜色(153,217,234));

  jbt mod 4。setcontentareaffilled(false);

  jbtMod4.setFont(新字体(黑体,字体。粗体,14));

  jtfStra.setBounds(15,5,40,30);

  jtfStra.setFont(新字体(黑体,字体。粗体,14));

  jtfstra。设置边框(空);

  jtfstra。设置可编辑(false);

  jtfstra。seto paque(假);

  jbtStr1.setBounds(15,35,90,40);

  jbtStr1.setForeground(新颜色(153,217,234));

  jbt str 1。setcontentareaffilled(false);

  jbtStr1.setFont(新字体(黑体,字体。粗体,14));

  jbtStr2.setBounds(115,35,90,40);

  jbtStr2.setForeground(新颜色(153,217,234));

  jbt str 2。setcontentareaffilled(false);

  jbtStr2.setFont(新字体(黑体,字体。粗体,14));

  jbtStr3.setBounds(115,85,90,40);

  jbtStr3.setForeground(新颜色(153,217,234));

  jbt str 3。setcontentareaffilled(false);

  jbtStr3.setFont(新字体(黑体,字体。粗体,14));

  jbtStr4.setBounds(15,85,90,40);

  jbtStr4.setForeground(新颜色(153,217,234));

  jbt str 4。setcontentareaffilled(false);

  jbtStr4.setFont(新字体(黑体,字体。粗体,14));

  jbtClea.setBounds(620,10,70,20);

  jbtClea.setForeground(新颜色(153,217,234));

  jbtclea。setcontentareaffilled(false);

  jbtClea.setFont(新字体(黑体,字体。粗体,14));

  //监听器

  jbtclea。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  下面板。删除全部();

  下面板。添加(jbtClea);

  下面板。更新(下面板。获取图形());

  }

  });

  //画图区域

  downPanel.setBounds(260,15,700,627);

  downPanel.setBackground(颜色。白色);

  下面板。设置布局(空);

  下面板。添加(jbtClea);

  太平绅士小组1。设置边框(边框工厂。创建线条边框(get foreground());

  jpPanel1.setBounds(20,15,222,142);

  jpPanel1.setBackground(颜色。白色);

  jppanel 1。设置布局(空);

  jppanel 1。添加(jbt tria);

  jppanel 1。添加(JB troun);

  jppanel 1。add(JB trect);

  jppanel 1。添加(jbt colo);

  jppanel 1。add(jtfGrap);

  jppanel 2。设置边框(边框工厂。create line border(get foreground()));

  jpPanel2.setBounds(20,177,222,142);

  jpPanel2.setBackground(颜色。白色);

  jppanel 2。设置布局(空);

  jppanel 2。添加(jbt mod 1);

  jppanel 2。添加(jbt mod 2);

  jppanel 2。添加(jbt mod 3);

  jppanel 2。添加(jbt mod 4);

  jppanel 2。添加(jtf modi);

  jppanel 3。设置边框(边框工厂。create line border(get foreground()));

  jpPanel3.setBounds(20,339,222,142);

  jpPanel3.setBackground(颜色。白色);

  jppanel 3。设置布局(空);

  jppanel 3。add(jbt str 1);

  jppanel 3。add(jbt str 2);

  jppanel 3。add(jbt str 3);

  jppanel 3。add(jbt str 4);

  jppanel 3。add(jtfStra);

  这个。添加(下面板);

  这个。add(jp panel 1);

  这个。添加(jp panel 2);

  这个。添加(jp panel 3);

  JB troun。addactionlistener(新操作侦听器(){

  已执行公共void操作(操作事件参数0){

  name=圆形;

  }

  });

  //监听器

  JB trect。addactionlistener(新操作侦听器(){

  已执行公共void操作(操作事件参数0){

  name=矩形;

  }

  });

  jbt tria。addactionlistener(新操作侦听器(){

  已执行公共void操作(操作事件参数0){

  name=三角形;

  }

  });

  jbt colo . addactionlistener(新操作监听器(){

  已执行公共无效操作(操作事件e){

  c=jcolorchooser。showdialog(空值,选择一种颜色,jbt colo . get前台());

  }

  });

  jbt mod 1。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  name2=三角形;

  如果(名字!=null name.equals(矩形)) {

  flag=1;

  } else if (name!=null name.equals(圆形)) {

  flag=2;

  } else if (name!=null name.equals(三角形)) {

  flag=3;

  }

  }

  });

  jbt mod 2。addactionlistener(新操作侦听器(){

  @覆盖

  已执行公共无效操作(操作事件e){

  name2=圆形;

  如果(名字!=null name.equals(矩形)) {

  flag=4;

  } else if (name!=null name.equals(三角形)) {

  flag=5;

  } else if (name!=null name.equals(圆形)) {

  flag=6;

  }

  }

  });

  jbt mod 3。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  name2=矩形;

  如果(名字!=null name.equals(矩形)) {

  flag=7;

  } else if (name!=null name.equals(圆形)) {

  flag=8;

  } else if (name!=null name.equals(三角形)) {

  flag=9;

  }

  }

  });

  jbt mod 4。addactionlistener(新操作侦听器(){

  @覆盖

  已执行公共无效操作(操作事件e){

  //TODO自动生成的方法存根

  flag=-1;

  jfile chooser chooser=new jfile chooser();

  选择者。setmultiselectenabled(true);

  FileNameExtensionFilter filter=new FileNameExtensionFilter( JPG GIF图像、 ipg 、 GIF );

  //设置文件类型

  chooser.setFileFilter(过滤器);

  //打开选择器面板

  int returmVal=chooser。showopendialog(下面板);

  if (returmVal==JFileChooser .APPROVE_OPTION) {

  选定的文件=选择器。get selected files();

  repaint();

  }

  }

  });

  jbt str 1。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  c=颜色.红色

  flag=10

  }

  });

  jbt str 2。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  c=颜色.绿色

  flag=10

  }

  });

  jbt str 3。addactionlistener(新操作侦听器(){

  已执行公共无效操作(操作事件e){

  c=颜色.红色

  flag=11

  }

  });

  jbtStr4.addActionListener(新ActionListener() {

  已执行公共无效操作(操作事件e){

  c=颜色.绿色

  flag=11

  }

  });

  下面板。addmouse侦听器(新的鼠标侦听器(){

  @覆盖

  单击了公共void鼠标(鼠标事件e){

  }

  @覆盖

  按下公共void鼠标(鼠标事件e){

  x=e . getx();

  y=e . gety();

  }

  @覆盖

  公共void鼠标释放(鼠标事件e){

  x1=e . getx();

  y1=e . gety();

  图形g=下面板。获取图形();

  //系统。出去。println( name= name);

  开关(标志){

  案例0:

  Draw d=proFactory.produce(名称);

  d.draw(g,x,y,x1,y1,c);

  打破;

  案例1:

  con=new Rec();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例二:

  con=new Oval();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例三:

  con=new Tri();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例4:

  con=new Rec();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例5:

  con=new Tri();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例6:

  con=new Oval();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例7:

  con=new Rec();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例8:

  con=new Oval();

  con.paint(g,x,y,x1,y1,c);

  打破;

  案例9:

  con=new Tri();

  con.paint(g,x,y,x1,y1,c);

  打破;

  }

  if (flag==1 flag==2 flag==3) {

  Tri_Tri tr=新Tri _ Tri(con);

  tr.paint(g,x,y,x1,y1,c);

  flag=0;

  }

  if (flag==4 flag==5 flag==6) {

  Oval _ Oval tr=new Oval _ Oval(con);

  tr.paint(g,x,y,x1,y1,c);

  flag=0;

  }

  if (flag==7 flag==8 flag==9) {

  Rec_Rec tr=新Rec _ Rec(con);

  tr.paint(g,x,y,x1,y1,c);

  flag=0;

  }

  if (flag==10) {

  //桥接,注入新的属性尺寸大小

  size s=new Big();

  浮动大小;

  size=s . be paint();

  pen p=new big pen();

  画图(名称,g,x,y,x1,y1,c,大小);

  }

  if (flag==11) {

  size s=new Small();

  浮动大小;

  size=s . be paint();

  pen p=new big pen();

  画图(名称,g,x,y,x1,y1,c,大小);

  }

  }

  @覆盖

  公共void鼠标输入(鼠标事件e){

  //TODO自动生成的方法存根

  }

  @覆盖

  公共void鼠标退出(鼠标事件e){

  //TODO自动生成的方法存根

  }

  });

  }

  公共void showFrame() {

  这个。settitle(画点什么);

  这个。设置布局(空);

  this.setSize(1000,700);

  this.setLocation(600,300);

  这个。setdefaultcloseoperation(3);

  这个。设置可见(真);

  }

  公共静态void main(String[] args) {

  新大型机();

  }

  }5、源代码资源地址(想法和黯然失色均可运行)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: