程序设计技术课程设计,程序设计课件
课程名称:设计模式课程设计
设计题目:基于设计模式的绘图程序设计
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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。