java课程设计--迷你画板
画图板java课程设计

画图板java课程设计一、课程目标知识目标:1. 学生能掌握Java语言的基本语法和编程结构。
2. 学生能理解画图板的基本原理,掌握使用Java进行图形界面的设计与实现。
3. 学生能运用Java中的事件处理机制,实现与画图板的交互功能。
技能目标:1. 学生能运用Java编程技能,独立设计并实现一个简单的画图板程序。
2. 学生能通过本课程的学习,提升问题分析能力,运用Java语言解决实际问题。
3. 学生能运用所学的知识,对画图板程序进行调试和优化,提高程序的稳定性。
情感态度价值观目标:1. 学生通过动手实践,培养对编程的兴趣,增强学习Java语言的自信心。
2. 学生在小组合作中,培养团队协作能力,学会共同解决问题。
3. 学生能够认识到编程在现实生活中的应用,理解编程对解决实际问题的重要性。
分析课程性质、学生特点和教学要求:本课程为Java语言编程课程,旨在让学生掌握Java编程的基本技能,培养实际编程能力。
学生处于高年级阶段,具有一定的编程基础,对Java语言有初步了解。
根据教学要求,课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。
将目标分解为具体的学习成果:1. 学生能独立完成一个画图板程序的编写,实现基本绘图功能。
2. 学生能对画图板程序进行调试和优化,提高程序性能。
3. 学生在课程学习过程中,积极参与小组讨论,提升团队协作能力。
4. 学生通过课程学习,对编程产生浓厚兴趣,为后续深入学习奠定基础。
二、教学内容本课程教学内容围绕以下三个方面展开:1. Java基本语法和编程结构:包括数据类型、变量、运算符、控制结构、数组等基本概念,确保学生掌握Java编程的基础知识。
2. Java图形用户界面(GUI)设计:涉及Swing库的使用,重点讲解JFrame、JPanel等容器组件以及绘图相关的Graphics类,使学生能够实现画图板界面设计。
3. Java事件处理机制:介绍事件监听器、事件对象等概念,让学生了解并掌握画图板中鼠标、键盘等事件的处理方法。
java简易画板(可以画矩形圆直线自定义)

import java.awt.*;im portjava.awt.e vent.*;im portjavax.swin g.*;impor t jav a.io.*;im portjavax.swin g.eve nt.*;impo rt ja va.sq l.*;impor t jav a.net.*;p ublic clas s Tes tmain exte nds J Frame{pr ivate JTab bedPa ne jt abpan el =new J Tabbe dPane();priva te dr awing_boar d Dra w = n ew dr awing_boar d();publ ic Te stmai n(){// j tabpa nel.a dd(ne w hom epage_pane l(),"主页");jt abpan el.ad d(Dra w,"简易画板");ad d(jta bpane l,Bor derLa yout.CENTE R);setS ize(550,500);setT itle("期末测试");setD efaul tClos eOper ation(JFra me.EX IT_ON_CLOS E);setL ocati onRel ative To(nu ll);set Visib le(tr ue);}p ublic stat ic vo id ma in(St ring[] arg s) {new Test main();}// p rivat e cla ss ho mepag e_pan el ex tends JPan el{//// }}imp ort j avax.swing.*;i mport java x.swi ng.bo rder.*;im portjava.awt.*;imp ort j ava.a wt.ev ent.*;imp ort j ava.u til.*;pub lic c lassdrawi ng_bo ard e xtend s JPa nel{priv ate A rrayL ist<C olor> list color = ne w Arr ayLis t<Col or>();pr ivate Arra yList<Inte ger>xcoor dinat e = n ew Ar rayLi st<In teger>();priv ate A rrayL ist<I ntege r> yc oordi nate= new Arra yList<Inte ger>();p rivat e Arr ayLis t<Int eger> isde lete= new Arra yList<Inte ger>();p rivat e Arr ayLis t<Int eger> draw_size = ne w Arr ayLis t<Int eger>(); priva te Ar rayLi st<St ring> dra w_str ing = newArray List<Strin g>();pri vateint[][] ln_widt h_len gth = newint[9000][2];priva te in t[][] re_w idth_lengt h = n ew in t[9000][2];pr ivate int[][] c r_wid th_le ngth= new int[9000][2];priv ate i nt nu mberp oint= 0;priv ate S tring stri ng =null;pri vateint t ypes= 3;priv ate S tring[] ty pefig ure = newStrin g[]{"圆","矩形","直线"};priv ate I mageI con[] icon s = n ew Im ageIc on[ty pes];pri vateDefau ltCom boBox Model<Obje ct[]> mode l = n ewDe fault Combo BoxMo del<O bject[]>();pr ivate JCom boBox<Obje ct[]> jcbf igure = ne w JCo mboBo x<Obj ect[]>(mod el);priv ate J ToolB ar jT oolBa r1 =new J ToolB ar("工具栏");pri vateboole an de lete_mark= fal se;priva te JP opupM enu j Popup Menu= new JPop upMen u();priv ate C olorbackg round color = Co lor.W HITE;pri vateColor fore dgrou ndcol or =Color.RED;pri vateint S ize = 10;priv ate b oolea n isD rawba ck =false;pr ivate intdrawb ackl_lengt h = 0;pr ivate intdrawb ack_s peed= 30;pri vateint x,y;priva te bo olean isdr awing = tr ue;priva te bo olean isdr aw_fi gure= fal se;priva te bo olean isdr awcir cle = fals e;p rivat e boo leanisdra wrect angle = fa lse;priv ate b oolea n isd rawli ne =false;pr ivate bool ean a ddnew point = fa lse;priv ate O bject []se lecti on={n ew In teger(1),n ew In teger(5),newInteg er(10),new Inte ger(20),ne w Int eger(50),newInteg er(100),ne w Int eger(300),new I ntege r(500),n ew In teger(800),newInteg er(1000)};pri vateObjec t []d raw_S ize={new I ntege r(3),new I ntege r(5),new Inte ger(8),new Inte ger(10),ne w Int eger(15),newInteg er(18),new Inte ger(20),ne w Int eger(25),newInteg er(30),new Inte ger(40),ne w Int eger(50)};pub lic d rawin g_boa rd(){jP opupM enu.a dd(ne w MyA ction("选择背景颜色",new I ntege r(Key Event.VK_B),Key Strok e.get KeySt roke(KeyEv ent.V K_B,A ction Event.CTRL_MASK)));jPo pupMe nu.ad d(new MyAc tion("选择画笔颜色",n ewIn teger(KeyE vent.VK_F),KeyS troke.getK eyStr oke(K eyEve nt.VK_F,Ac tionE vent.CTRL_MASK)));jPop upMen u.add(newMyAct ion("擦除",n ew In teger(KeyE vent.VK_D), KeyS troke.getK eyStr oke(K eyEve nt.VK_D,Ac tionE vent.CTRL_MASK)));jPop upMen u.add(newMyAct ion("回放",n ew In teger(KeyE vent.VK_W), KeyS troke.getK eyStr oke(K eyEve nt.VK_W,Ac tionE vent.CTRL_MASK)));jPop upMen u.add(newMyAct ion("选择画笔大小",ne wInt eger(KeyEv ent.V K_S),KeySt roke.getKe yStro ke(Ke yEven t.VK_S,Act ionEv ent.C TRL_M ASK)));jPopu pMenu.add(new M yActi on("重画",ne w Int eger(KeyEv ent.V K_R),KeySt roke.getKe yStro ke(Ke yEven t.VK_R,Act ionEv ent.C TRL_M ASK)));icons[0] = newImage Icon("Pict ure\\Circl e.PNG");icon s[1]= new Imag eIcon("Pic ture\\Rect angle.PNG");icons[2] = newImage Icon("Pict ure\\line.PNG");i cons[0].se tImag e(ico ns[0].getI mage().get Scale dInst ance(40, 40,Im age.S CALE_AREA_AVERA GING));icons[1].s etIma ge(ic ons[1].get Image().ge tScal edIns tance(40,40, I mage.SCALE_AREA_AVER AGING));icon s[2].setIm age(i cons[2].ge tImag e().g etSca ledIn stanc e(40, 40,Image.SCAL E_ARE A_AVE RAGIN G));for(inti=0;i<type s;i++){mode l.add Eleme nt(ne w Obj ect[]{icon s[i],typef igure[i]});}jT oolBa r1.se tLayo ut(ne w Flo wLayo ut(5));MyLis tCell Rende rer m yList CellR ender er =new M yList CellR ender er();jc bfigu re.se tRend erer(myLis tCell Rende rer);Im ageIc on dr aw_pi cture = ne w Ima geIco n("Pi cture\\dra w.jpg");draw_pict ure.s etIma ge(dr aw_pi cture.getI mage().get Scale dInst ance(40, 40, Im age.S CALE_AREA_AVERA GING));jTool Bar1.add(n ew My Actio n("画笔",dra w_pic ture));jTool Bar1.add(j cbfig ure);Im ageIc on wr ite = newImage Icon("Pict ure\\A.PNG");writ e.set Image(writ e.get Image().ge tScal edIns tance(40,40, I mage.SCALE_AREA_AVER AGING));jToo lBar1.add(new M yActi on("写字",wr ite));a dd(jT oolBa r1,Bo rderL ayout.NORT H);addM ouseL isten er(ne w Mou seAda pter() { pu blicvoidmouse Click ed(Mo useEv ent e) {if(e.ge tButt on()==Mous eEven t.BUT TON1&&!isD rawba ck&&!isdra w_fig ure){xcoo rdina te.ad d(e.g etX());yc oordi nate.add(e.getY());listc olor.add(f oredg round color);dr aw_si ze.ad d(Siz e);d raw_s tring.add(strin g);l n_wid th_le ngth[numbe rpoin t][0]=0;l n_wid th_le ngth[numbe rpoin t][1]=0;r e_wid th_le ngth[numbe rpoin t][0]=0;r e_wid th_le ngth[numbe rpoin t][1]=0;c r_wid th_le ngth[numbe rpoin t][0]=0;c r_wid th_le ngth[numbe rpoin t][1]=0;n umber point++;s tring = nu ll;i f(del ete_m ark)isde lete.add(1);el sei sdele te.ad d(0);repa int();}els e if(e.get Butto n()==Mouse Event.BUTT ON3){jPop upMen u.sho w(e.g etCom ponen t(),e.get X(),e.get Y());}}});addMo useMo tionL isten er(ne w Mou seMot ionAd apter(){pub lic v oid m ouseD ragge d(Mou seEve nt e){if(!isDra wback&&!is draw_figur e){x coord inate.add(e.get X());ycoo rdina te.ad d(e.g etY());li stcol or.ad d(for edgro undco lor);draw_size.add(Size);dra w_str ing.a dd(st ring);str ing = null;ln_width_leng th[nu mberp oint][0]=0;ln_width_leng th[nu mberp oint][1]=0;re_width_leng th[nu mberp oint][0]=0;re_width_leng th[nu mberp oint][1]=0;cr_width_leng th[nu mberp oint][0]=0;cr_width_leng th[nu mberp oint][1]=0;num berpo int++;if(delet e_mar k)i sdele te.ad d(1);elseisd elete.add(0);r epain t();}elseif(!i sDraw back&&isdr aw_fi gure&&isdr awlin e){ i f(add newpo int){xco ordin ate.a dd(e.getX());ycoor dinat e.add(e.ge tY());li stcol or.ad d(for edgro undco lor);dra w_siz e.add(Size);d raw_s tring.add(strin g);re_wi dth_l ength[numb erpoi nt][0]=0;re_w idth_lengt h[num berpo int][1]=0;cr_width_leng th[nu mberp oint][0]=0;cr_widt h_len gth[n umber point][1]=0;i f(del ete_m ark)isd elete.add(1);elseisd elete.add(0);strin g = n ull;numb erpoi nt++;}ln_widt h_len gth[n umber point-1][0]=e.g etX();ln_width_leng th[nu mberp oint-1][1]=e.ge tY();addn ewpoi nt =false;rep aint();}el se if(!isD rawba ck&&i sdraw_figu re&&i sdraw recta ngle){ if(addne wpoin t){xcoor dinat e.add(e.ge tX());yc oordi nate.add(e.getY());x =e.get X();y =e.get Y();list color.add(fored groun dcolo r);draw_size.add(S ize);dra w_str ing.a dd(st ring);ln_widt h_len gth[n umber point][0]=0;l n_wid th_le ngth[numbe rpoin t][1]=0;cr_wi dth_l ength[numb erpoi nt][0]=0;cr_w idth_lengt h[num berpo int][1]=0;if(delet e_mar k)isdel ete.a dd(1);el seisdel ete.a dd(0);st ring= nul l;n umber point++;}re_w idth_lengt h[num berpo int-1][0]=Math.abs(e.getX()-x);re_width_leng th[nu mberp oint-1][1]=Math.abs(e.get Y()-y);ad dnewp oint= fal se;r epain t();}elseif(!i sDraw back&&isdr aw_fi gure&&isdr awcir cle){if(a ddnew point){x coord inate.add(e.get X());yco ordin ate.a dd(e.getY());x = e.getX();y = e.getY();listc olor.add(f oredg round color);d raw_s ize.a dd(Si ze);draw_stri ng.ad d(str ing);ln_width_leng th[nu mberp oint][0]=0;ln_widt h_len gth[n umber point][1]=0;r e_wid th_le ngth[numbe rpoin t][0]=0;re_wi dth_l ength[numb erpoi nt][1]=0;if(d elete_mark)i sdele te.ad d(1);els ei sdele te.ad d(0);str ing = null;nu mberp oint++;}cr_wi dth_l ength[numb erpoi nt-1][0]=M ath.a bs(e.getX()-x);cr_w idth_lengt h[num berpo int-1][1]=Math.abs(e.getY()-y);add newpo int = fals e;re paint();}}});jc bfigu re.ad dActi onLis tener(newActio nList ener() {pub lic v oid a ction Perfo rmed(Actio nEven t e){isdr aw_fi gure= tru e;add newpo int = true;if(t ypefi gure[jcbfi gure.getSe lecte dInde x()].equal s("圆")){ i sdraw circl e = t rue;isdra wrect angle = fa lse;isdra wline = fa lse;}elseif(ty pefig ure[j cbfig ure.g etSel ected Index()].e quals("矩形")){i sdraw recta ngle= tru e;is drawc ircle = fa lse;isdra wline = fa lse;}elseif(ty pefig ure[j cbfig ure.g etSel ected Index()].e quals("直线")){i sdraw line= tru e;is drawr ectan gle = fals e;is drawc ircle = fa lse;}}});}publ ic vo id Se tback groun d(Col or co lor){se tBack groun d(col or);rep aint();}pub lic v oid p aintC ompon ent(G raphi cs g){s uper.paint Compo nent(g);if(i sDraw back){for(i nt i= 0;i<draw backl_leng th;i++){if(draw_stri ng.ge t(i)==null){if(isde lete.get(i)==0)g.s etCol or(li stcol or.ge t(i));els eg.setC olor(getBa ckgro und());if(ln_w idth_lengt h[i][0]!=0)g.draw Line(xcoor dinat e.get(i),ycoor dinat e.get(i),l n_wid th_le ngth[i][0],ln_w idth_lengt h[i][1]);elseif(re_widt h_len gth[i][0]!=0)g.dra wRect(xcoo rdina te.ge t(i),ycoo rdina te.ge t(i), re_w idth_lengt h[i][0], r e_wid th_le ngth[i][1]);el se if(cr_w idth_lengt h[i][0]!=0)g.drawO val(x coord inate.get(i), y coord inate.get(i), c r_wid th_le ngth[i][0], cr_width_leng th[i][1]);elseg.fillO val(x coord inate.get(i), y coord inate.get(i), d raw_s ize.g et(i),dra w_siz e.get(i));}else{g.s etFon t(new Font("方正姚体", F ont.C ENTER_BASE LINE, 30));if(isdel ete.g et(i)==0)g.se tColo r(lis tcolo r.get(i));elseg.setCo lor(g etBac kgrou nd());g.d rawSt ring(draw_strin g.get(i),x coord inate.get(i), y coord inate.get(i));}}}els e{for(int i = 0;i<num berpo int;i++){i f(dra w_str ing.g et(i)==nul l){i f(isd elete.get(i)==0)g.setCo lor(l istco lor.g et(i));el seg.set Color(getB ackgr ound());i f(ln_width_leng th[i][0]!=0)g.dra wLine(xcoo rdina te.ge t(i),ycoo rdina te.ge t(i),ln_wi dth_l ength[i][0],ln_width_leng th[i][1]);else if(r e_wid th_le ngth[i][0]!=0)g.dr awRec t(xco ordin ate.g et(i),yco ordin ate.g et(i), re_width_leng th[i][0],re_wi dth_l ength[i][1]);e lse i f(cr_width_leng th[i][0]!=0)g.draw Oval(xcoor dinat e.get(i),ycoor dinat e.get(i),cr_wi dth_l ength[i][0], cr_widt h_len gth[i][1]);els eg.fill Oval(xcoor dinat e.get(i),ycoor dinat e.get(i),draw_size.get(i), dr aw_si ze.ge t(i));}els e{g.setFo nt(ne w Fon t("方正姚体",Font.CENTE R_BAS ELINE, 30));if(isde lete.get(i)==0)g.s etCol or(li stcol or.ge t(i));els eg.setC olor(getBa ckgro und());g.drawS tring(draw_stri ng.ge t(i),xcoor dinat e.get(i),ycoor dinat e.get(i));}}}}publi c voi d red raw(){x coord inate.clea r();yco ordin ate.c lear();listc olor.clear();draw_size.clea r();isd elete.clea r();dra w_str ing.c lear();numbe rpoin t = 0;r epain t();}p rivat e cla ss My ListC ellRe ndere r imp lemen ts Li stCel lRend erer{pr ivate JLab el jl bCell = ne w JLa bel("",JLa bel.L EFT);pr ivate Bord er li neBor der =Borde rFact ory.c reate LineB order(Colo r.bla ck,1);p rivat e Bor der e mptyB order =Bo rderF actor y.cre ateEm ptyBo rder(2, 2, 2, 2);publi c MyL istCe llRen derer(){set Prefe rredS ize(n ew Di mensi on(40,40));}pu blicCompo nentgetLi stCel lRend ererC ompon ent(J Listlist, Obje ct va lue,i nt in dex,boole an is Selec ted,boole an ce llHas Focus) { Obj ect[] pair = (O bject[])va lue;jl bCell.setO paque(true);jlbC ell.s etIco n((Im ageIc on)pa ir[0]);jlbC ell.s etTex t(pai r[1].toStr ing());if(i sSele cted){jlbC ell.s etFor egrou nd(li st.ge tSele ction Foreg round());j lbCel l.set Backg round(list.getS elect ionBa ckgro und());}else{jlbC ell.s etFor egrou nd(li st.ge tFore groun d());jlbCe ll.se tBack groun d(lis t.get Backg round());}jl bCell.setB order(cell HasFo cus?lineB order:empt yBord er);re turnjlbCe ll;}}priva te cl ass d rawba ck im pleme nts R unnab le{publ ic v oid r un(){for(i nt i= 0;i<xcoo rdina te.si ze();i++){drawb ackl_lengt h = i;try{Thr ead.s leep(drawb ack_s peed);rep aint();} c atch(Inte rrupt edExc eptio n e){JOp tionP ane.s howMe ssage Dialo g(nul l, e);}}isDr awbac k = f alse;}}pri vateclass MyAc tionexten ds Ab strac tActi on{priv ate S tring name;p ublic MyAc tion(Strin g nam e,Ico n ico n){sup er(na me,ic on);th is.na me =name;}pub lic M yActi on(St ringname,Integ er mn emoni c,Key Strok e acc elera tor){s uper(name);putVa lue(A ction.MNEM ONIC_KEY,mnemo nic);p utVal ue(Ac tion.ACCEL ERATO R_KEY, acc elera tor);t his.n ame = nam e;}p ublic void acti onPer forme d(Act ionEv ent e) {if(name.equal s("选择背景颜色")){ba ckgro undco lor = JCol orCho oser.showD ialog(null,"Ch ooseBackG round colo r", C olor.WHITE);del ete_m ark = fals e;Set backg round(back groun dcolo r);}els e if(name.equal s("选择画笔颜色")){fo redgr oundc olor= JCo lorCh ooser.show Dialo g(nul l,"C hoose Fore dGrou nd co lor", Colo r.BLA CK);d elete_mark = fa lse;}el se if(name.equa ls("擦除")&&!dele te_ma rk){d elete_mark = tr ue;}els e if(name.equal s("回放")&&!isDra wback){isD rawba ck =true;delet e_mar k = f alse;drawb ack_s peed=(int)(JOpt ionPa ne.sh owInp utDia log(n ull,"选择回放速度","请选择",JOp tionP ane.Q UESTI ON_ME SSAGE,null,sele ction,null));ne w Thr ead(n ew dr awbac k()).start();}els e if(name.equal s("选择画笔大小")){Si ze =(int)(JOpt ionPa ne.sh owInp utDia log(n ull,"选择画笔大小","请选择",JOp tionP ane.Q UESTI ON_ME SSAGE,null,draw_Size,null));}els e if(name.equal s("重画")){r edraw();}els e if(name.equal s("写字")){s tring = JO ption Pane.showI nputD ialog(null,"输入字符",nu ll);}el se if(name.equa ls("画笔")){isdra w_fig ure = fals e;isd rawin g = t rue;i sdraw line= fal se;is drawr ectan gle = fals e;isd rawci rcle= fal se; de lete_mark= fal se; }}}}。
JAVA简单画板程序设计实验报告材料

JAVA 期末画板实验报告课程题目:运用JAVA 语言编写一个画板程序,这个画板要有画图,特殊图形绘 制,颜色改变,画笔大小改变等功能. 设计思想:1. 发展界面设计2. 发展算法实现3. 运行调试4. 总结问题设计过程:A. 界面设计新建一个 Jframe 容器 , 然后定义一个 panel 〔 Panelconvas2〕,convas2 是工具栏.用 borderlayout 布置容器的边框布局, 将工具栏放在 NORTH 局部.完成界面设计.添加工具按键Panel canvas2 Panel<>;Button btn1 Button<"直线">;Button btn2 Button<"椭圆">;add<canvas2,BorderLayout.NORTH >;Button Button Button Button Choice Choice btn3btn4btn5btn6Button<"矩形">;Button<"去除">;Button<"画笔">;Button<"橡皮">; choiceChoice<>; choice1Choice<>;canvas2 .add<choice>;canvas2 .add<choice1>;canvas2 .add<btn1>;canvas2 .add<btn2>;canvas2 .add<btn3>;canvas2 .add<btn4>;canvas2 .add<btn5>;canvas2 .add<btn6>;在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色.1. 画笔的大小:choice1 .add<"1">;choice1 .add<"3">;choice1 .add<"5">;choice1 .add<"7">;choice1 .add<"9">;2. 画笔颜色choice .add<"黑色">;choice .add<"蓝色">;choice .add<"红色">;choice .add<"黄色">;choice .add<"绿色">;3 展示画板B. 算法实现运用画板,首先要对工具栏按键和鼠标发展监听,然后对监听发展响应.运行相应程序发展画图1. 监听程序展示:choicechoice1btn1 .addActionListener<btn2btn3btn4btn5btn6addMouseListener<;addMouseMotionListener<;2. 按键监听响应监听到按键后,判断当前会话工具actionPerformed<ActionEvent e>{btn1>>{a= '1';}btn2>>{a= '2';}btn3>>{a= '3';}btn4>>{.getGraphics<>;.getHeight<>>;}btn5>>{a= '4';}btn6>>{a= '5';}}定义一个变量a,对按键监听发展响应,例如当监听到btn1 时赋值a=‘1’〔a 为char 型〕, 即当前工具为直线.但是当监听到btn4 时不发展对a 赋值而是直接发展去除操作, 由于去除操作是对画布发展去除,不参预鼠标事件, 因此可以直接执行.3. 鼠标监听响应a. 鼠标按钮按下事件,获取画图起始坐标x0,y0.mousePressed<MouseEvent e>{x0=e.getX<>;y0=e.getY<>;}b. 鼠标挪移事件mouseMoved<MouseEvent e>{}c. 鼠标按钮松开事件,此次响应完成对直线,椭圆,矩形发展绘制.mouseReleased<MouseEvent e>{.getGraphics<>;sizeBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;a>{'1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;'2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;'3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;}}d. 鼠标进入事件:e. 鼠标离开事件:mouseDragged<MouseEvent e> {.getGraphics<>;size BasicStroke<con ,BasicStroke.CAP_BUTT ,BasicStroke.JOIN_BEVEL >;g.setColor<b >;g.setStroke<size >;a >{'4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;'5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;g.鼠标拖动事件: 此次响应实现画笔〔随笔划〕 ,橡皮的绘制 .. f.鼠标单击事件:x0 = e.getX<>;y0 = e.getY<>;}}4.下拉列表响应a.颜色下拉列表响应:choice>{choice .getSelectedIndex<>==0>b=Color.black;choice .getSelectedIndex<>==1>b=Color.BLUE;choice .getSelectedIndex<>==2>b=Color.red;choice .getSelectedIndex<>==3>b=Color.yellow;choice .getSelectedIndex<>==4>b=Color.green;}调用choice.getSelectedIndex<>返回被选中的选项的序号〔下拉列表中第一个选项序号为0,挨次递加.〕即发展选择颜色的操作b.画笔大小下拉列表响应:choice1>{choice1 .getSelectedItem<>=="1">{con=1;}choice1 .getSelectedItem<>=="3">{con=3;}choice1 .getSelectedItem<>=="5">{con=5;}choice1 .getSelectedItem<>=="7">{con=7;}choice1 .getSelectedItem<>=="9">{con=9;}}调用choice1.getSelectedItem<>返回被选中选项的标签文本字符串,即确定画笔的大小〔con〕.5.工具栏工具实现程序详解〔1〕.getGraphics<>;size=con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;绘制图形用到类Graphics2D,其中包括不少绘制图形的方法, 定义一个Graphics2D类g,用getGraphics<>来得到一个Graphics2D对象,它相当于组建的绘图环境,可以发展各种绘图操作.个根本集合,这些图元使用Graphics2D 对象呈现,而该对象的Stroke 属性设置为此BasicStroke.其中con为画笔宽度路径和虚线线段外角,将路径线段连接在一起. 〔以上内容为网上查找资料所得.〕〔2〕实现直线,椭圆,矩形绘制:a>{'1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;'2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;'3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;}〔3〕随笔划和橡皮a>{'4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;'5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;x0 = e.getX<>;y0 = e.getY<>;break ;}6.主类程序得以运行的入口,进入主类后即运行litao 〔〕类.C.调试运行调试运行后得到了画板和预期的所有功能,实现结果展示:D.遇到问题1.绘制完成后,将窗口最大化或者最小化后再打开,原本绘制的图形消失.尚未解决.2.确定画笔大小时不得要领,后来通过查找资料解决.附表1:源程序:import java.awt.*;import java.awt.event.*;import javax.swing.JFrame;public class litao extends JFrame implements MouseMotionListener,MouseListener,ActionListener, ItemListener {Panel canvas2 = new Panel<>;Button btn1 = new Button<"直线">;Button btn2 = new Button<"椭圆">;Button btn3 = new Button<"矩形">;Button btn4 = new Button<"去除">;Button btn5 = new Button<"画笔">;Button btn6 = new Button<"橡皮">;Choice choice = new Choice<>;Choice choice1 = new Choice<>;Color b;int x0,y0;char a='4';int con=1;BasicStroke size;private static Color[] colors = { Color.black, Color.blue, Color.red,Color.yellow, Color.green };public litao<>{choice1.add<"1">;choice1.add<"3">;choice1.add<"5">;choice1.add<"7">;choice1.add<"9">;choice.add<"黑色">;choice.add<"蓝色">;choice.add<"红色">;choice.add<"黄色">;choice.add<绿"色">;canvas2.add<choice>;canvas2.add<choice1>;canvas2.add<btn1>;canvas2.add<btn2>;canvas2.add<btn3>;canvas2.add<btn4>;canvas2.add<btn5>;canvas2.add<btn6>;choice.addItemListener<this>; choice1.addItemListener<this>;btn1.addActionListener<this>;btn2.addActionListener<this>;btn3.addActionListener<this>;btn4.addActionListener<this>;btn5.addActionListener<this>;btn6.addActionListener<this>; addMouseListener<this>; addMouseMotionListener<this>;add<canvas2,BorderLayout.NORTH>; setBackground<Color.white>;canvas2.setBackground<Color.blue>; this.setBackground<Color.white>; setSize<800, 600>;setVisible<true>;}public void paint<Graphics g>{}public void actionPerformed<ActionEvent e> { if<e.getSource<>.equals<btn1>>{a='1';}if<e.getSource<>.equals<btn2>>{a='2';}if<e.getSource<>.equals<btn3>>{a='3';}if<e.getSource<>.equals<btn4>>{Graphics g = this.getGraphics<>;g.clearRect<0, 0, this.getWidth<>, this.getHeight<>>;}if<e.getSource<>.equals<btn5>>{a='4';}if<e.getSource<>.equals<btn6>>{a='5';}}public void mousePressed<MouseEvent e>{x0=e.getX<>;y0=e.getY<>;}public void mouseMoved<MouseEvent e>{}public void mouseReleased<MouseEvent e>{Graphics2D g = <Graphics2D>this.getGraphics<>;size=newBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke. JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;switch<a>{case '1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;break;case '2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;break;case '3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;break;}}public void mouseEntered<MouseEvent e>{}public void mouseExited<MouseEvent e>{}public void mouseClicked<MouseEvent e>{}public void mouseDragged<MouseEvent e> { Graphics2D g = <Graphics2D>this.getGraphics<>;size=newBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke. JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;switch<a>{case '4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;break;case '5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;x0 = e.getX<>;y0 = e.getY<>;break;}}public void itemStateChanged<ItemEvent e> { if<e.getSource<>==choice>{if<choice.getSelectedIndex<>==0>b=Color.black;if<choice.getSelectedIndex<>==1>b=Color.BLUE;if<choice.getSelectedIndex<>==2>b=Color.red;if<choice.getSelectedIndex<>==3>b=Color.yellow;if<choice.getSelectedIndex<>==4>b=Color.green;}if<e.getSource<>==choice1>{if<choice1.getSelectedItem<>=="1">{con=1;}else if<choice1.getSelectedItem<>=="3"> {con=3;}else if<choice1.getSelectedItem<>=="5"> {con=5;}else if<choice1.getSelectedItem<>=="7"> {con=7;}else if<choice1.getSelectedItem<>=="9">{con=9;}}}public static void main<String[] args> { new litao<>;}}。
java画板课程设计

Java画板课程设计是一个很好的实践项目,可以帮助学生深入了解Java编程语言以及图形用户界面(GUI)设计。
下面是一个简单的Java画板课程设计的步骤和要点:一、设计界面首先,你需要设计一个简单的用户界面,包括画布、画笔、颜色选择器等控件。
可以使用Java的Swing库来创建GUI。
二、实现画布功能1.创建一个画布类,继承自JPanel。
2.在画布类中重写paintComponent()方法,用于绘制图形。
3.实现鼠标事件监听器,包括鼠标按下、鼠标移动和鼠标释放事件。
4.在鼠标按下事件中记录鼠标位置,在鼠标移动事件中绘制线条。
5.在鼠标释放事件中结束绘制。
三、实现画笔功能1.创建一个画笔类,包含颜色、线宽等属性。
2.在画笔类中实现draw()方法,用于绘制线条。
3.将画笔对象传递给画布类,以便在paintComponent()方法中使用。
四、实现颜色选择器功能1.创建一个颜色选择器类,继承自JComboBox。
2.在颜色选择器类中添加各种颜色选项。
3.将颜色选择器对象传递给画布类,以便在paintComponent()方法中使用。
五、整合功能1.将画布、画笔和颜色选择器整合到一个窗口中,可以使用JFrame来创建窗口。
2.设置窗口的关闭操作,以便程序退出时释放资源。
3.运行程序,测试各项功能是否正常工作。
以上是一个简单的Java画板课程设计的步骤和要点,你可以根据需要进行扩展和改进。
例如,可以添加更多的绘图工具、支持不同的绘图模式等。
通过这个项目,你可以学习到Java编程语言的基础知识以及GUI 设计技巧,提高自己的编程能力。
java图画板课程设计

java图画板课程设计一、教学目标本课程旨在通过Java编程语言实现一个简单的图画板应用程序。
通过本课程的学习,学生将掌握以下知识目标:1.理解Java编程语言的基本语法和结构。
2.掌握图形用户界面(GUI)的设计和实现方法。
3.熟悉Java绘图API的使用。
在技能目标方面,学生将能够:1.使用Java编写简单的图形用户界面应用程序。
2.实现图画板的基本功能,如绘图、擦除、保存和加载等。
在情感态度价值观目标方面,学生将培养以下能力:1.培养对计算机科学和编程的兴趣和热情。
2.培养解决问题的能力和创新思维。
3.培养团队合作和交流分享的意愿。
二、教学内容本课程的教学内容将围绕Java编程语言和图形用户界面设计展开。
具体的教学大纲如下:1.Java编程基础:介绍Java编程语言的基本语法和结构,包括变量、数据类型、运算符、控制语句等。
2.GUI设计:介绍图形用户界面设计的基本概念和原理,包括窗口、按钮、文本框等组件的使用和布局管理。
3.绘图API:介绍Java绘图API的使用,包括绘图的基本方法、颜色和线型的设置等。
4.实现图画板功能:通过实践项目,引导学生掌握绘图板的基本功能,如绘图、擦除、保存和加载等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。
包括:1.讲授法:教师讲解Java编程语言的基本语法和结构,GUI设计的基本概念和原理,以及绘图API的使用方法。
2.案例分析法:通过分析具体的案例,让学生理解图画板应用程序的设计和实现过程。
3.实验法:学生通过动手实践,编写Java代码实现图画板的基本功能。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选择一本适合学生水平的Java编程教材,用于学习和参考。
2.多媒体资料:提供相关的视频教程和演示文稿,帮助学生更好地理解和掌握Java编程和GUI设计的相关知识。
3.实验设备:提供计算机和编程环境,让学生能够进行实际编程实践。
课程设计java画板

课程设计java画板一、教学目标本课程的目标是让学生掌握Java编程基础,能够使用Java编写简单的图形程序。
通过本课程的学习,学生将能够理解Java编程的基本概念,掌握基本的图形绘制方法,培养编程思维和解决问题的能力。
具体来说,知识目标包括:1.理解Java编程的基本概念,如变量、数据类型、运算符、控制结构等。
2.掌握Java图形编程的基本概念,如图形类、绘图方法、事件处理等。
技能目标包括:1.能够使用Java编写简单的图形程序,如画线、画圆、画矩形等。
2.能够使用Java进行基本的输入输出操作,如键盘输入、屏幕输出等。
情感态度价值观目标包括:1.培养学生的编程思维,提高他们解决问题的能力。
2.培养学生的创新意识,让他们体验到编程的乐趣。
二、教学内容本课程的教学内容主要包括Java编程基础和Java图形编程两部分。
1.Java编程基础:–变量和数据类型–运算符和控制结构–函数和方法–输入输出操作2.Java图形编程:–图形类和绘图方法–事件处理和鼠标交互–示例程序:画线、画圆、画矩形等3.第一周:Java编程基础–变量和数据类型–运算符和控制结构4.第二周:Java编程基础(续)–函数和方法–输入输出操作5.第三周:Java图形编程–图形类和绘图方法–事件处理和鼠标交互6.第四周:示例程序和练习–画线、画圆、画矩形等示例程序–学生练习和反馈三、教学方法本课程将采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。
1.讲授法:教师通过讲解和演示,向学生传授Java编程基础知识和图形编程技巧。
2.案例分析法:教师通过分析典型案例,引导学生思考和解决问题,培养学生的编程思维。
3.实验法:学生通过动手编写代码和运行程序,巩固所学知识,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:Java编程基础和Java图形编程相关的教材,用于学生学习和参考。
我的java课程设计报告之画图板

我的java课程设计报告画图板目录1.项目背景/12.功能图/13.类图/14.源代码/15.运行结果/121.项目背景本设计的目的是综合面向对象程序设计课程中所学到的知识来开发一个小型的Java应用程序—画图板。
本项目的开发工具是Eclipse 4.5。
2.功能图3.类图4.源代码import java.applet.Applet;import java.awt.*;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import java.awt.event.WindowAdapter;2import java.awt.event.WindowEvent;import java.awt.geom.Ellipse2D;import java.awt.geom.Line2D;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.util.Properties;import java.util.Vector;import javax.imageio.ImageIO;import javax.swing.JColorChooser;import javax.swing.JFileChooser;import javax.swing.JOptionPane;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;public class DrawPencil extends Applet{private static final long serialVersionUID = 1L;Vector paintInfo = null;// 点信息向量组int n = 1;MediaTracker mt;int x = -1, y = -1;int con = 1;int Econ = 5;int toolFlag = 0;Color c = new Color(0, 0, 0);BasicStroke size = new BasicStroke(con, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);EveryPoint cutflag = new EveryPoint(-1, -1, c, 6, con);Panel toolPanel;Button eraser, drLine, drCircle, drRect;Button clear, pen;Choice ColChoice, SizeChoice, EraserChoice;Button colchooser;3Label 颜色, 大小B, 大小E;Button openPic, savePic;FileDialog openPicture, savePicture;public DrawPencil(){super();}public void init(){this.setSize(900, 600);paintInfo = new Vector();ColChoice = new Choice();ColChoice.add("black");ColChoice.add("red");ColChoice.add("blue");ColChoice.add("green");ColChoice.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){String name = ColChoice.getSelectedItem();if (name == "black"){c = new Color(0, 0, 0);}else if (name == "red"){c = new Color(255, 0, 0);}else if (name == "green"){c = new Color(0, 255, 0);}else if (name == "blue"){c = new Color(0, 0, 255);}}});SizeChoice = new Choice();SizeChoice.add("1");4SizeChoice.add("3");SizeChoice.add("5");SizeChoice.add("7");SizeChoice.add("9");SizeChoice.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){String selected = SizeChoice.getSelectedItem();if (selected == "1"){con = 1;size = new BasicStroke(con, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}else if (selected == "3"){con = 3;size = new BasicStroke(con, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}else if (selected == "5"){con = 5;size = new BasicStroke(con, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}else if (selected == "7"){con = 7;size = new BasicStroke(con, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}else if (selected == "9"){con = 9;size = new BasicStroke(con, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}}});EraserChoice = new Choice();EraserChoice.add("5");EraserChoice.add("9");5EraserChoice.add("13");EraserChoice.add("17");EraserChoice.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){String Esize = EraserChoice.getSelectedItem();if (Esize == "5"){Econ = 5 * 2;}else if (Esize == "9"){Econ = 9 * 2;}else if (Esize == "13"){Econ = 13 * 2;}else if (Esize == "17"){Econ = 17 * 3;}}});toolPanel = new Panel();clear = new Button("清除");eraser = new Button("橡皮");pen = new Button("画笔");drLine = new Button("画直线");drCircle = new Button("画圆形");drRect = new Button("画矩形");openPic = new Button("打开图画");savePic = new Button("保存图画");clear.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){toolFlag = 2;paintInfo.removeAllElements();repaint();}});6eraser.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){// TODO自动生成方法存根toolFlag = 1;}});pen.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){// TODO自动生成方法存根toolFlag = 0;}});drLine.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){toolFlag = 3;}});drCircle.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){toolFlag = 4;}});drRect.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){toolFlag = 5;}});savePic.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){printPanelToJPG(toolPanel);}});7颜色 = new Label("画笔颜色", Label.CENTER);大小B = new Label("画笔大小", Label.CENTER);大小E = new Label("橡皮大小", Label.CENTER);toolPanel.add(savePic);toolPanel.add(pen);toolPanel.add(drLine);toolPanel.add(颜色);toolPanel.add(ColChoice);toolPanel.add(大小B);toolPanel.add(SizeChoice);toolPanel.add(eraser);toolPanel.add(大小E);toolPanel.add(EraserChoice);toolPanel.add(clear);this.add(toolPanel);setBounds(60, 60, 900, 600);setVisible(true);validate();this.addMouseMotionListener(new MouseMotionAdapter(){public void mouseDragged(MouseEvent e){EveryPoint p1;switch (toolFlag){case 0:x = (int) e.getX();y = (int) e.getY();p1 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p1);repaint();break;case 1:x = (int) e.getX();y = (int) e.getY();p1 = new EveryPoint(x, y, null, toolFlag, Econ);paintInfo.addElement(p1);repaint();break;default:}}});8this.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e){EveryPoint p2;switch (toolFlag){case 3:x = (int) e.getX();y = (int) e.getY();p2 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p2);break;case 4:x = (int) e.getX();y = (int) e.getY();p2 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p2);break;case 5:x = (int) e.getX();y = (int) e.getY();p2 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p2);break;default:}}public void mouseReleased(MouseEvent e){EveryPoint p3;switch (toolFlag){case 0:paintInfo.addElement(cutflag);break;case 1:paintInfo.addElement(cutflag);break;case 3:x = (int) e.getX();y = (int) e.getY();p3 = new EveryPoint(x, y, c, toolFlag, con);9paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;case 4:x = (int) e.getX();y = (int) e.getY();p3 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;case 5:x = (int) e.getX();y = (int) e.getY();p3 = new EveryPoint(x, y, c, toolFlag, con);paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;default:}}});}public void paint(Graphics g){Graphics2D g2d = (Graphics2D) g;EveryPoint p1, p2;n = paintInfo.size();if (toolFlag == 2)g.clearRect(0, 0, getSize().width, getSize().height);// 清除for (int i = 0; i < n - 1; i++){p1 = (EveryPoint) paintInfo.elementAt(i);p2 = (EveryPoint) paintInfo.elementAt(i + 1);size = new BasicStroke(p1.boarder, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g2d.setColor(p1.col);g2d.setStroke(size);if (p1.tool == p2.tool){switch (p1.tool)10{case 0:Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x,p2.y);g2d.draw(line1);break;case 1:g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);break;case 3:Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x,p2.y);g2d.draw(line2);break;case 4:Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));g2d.draw(ellipse);break;case 5:Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));g2d.draw(rect);break;case 6:i = i + 1;break;default:}}}}public void update(Graphics g){paint(g);}public void printPanelToJPG(Panel graph){int width = this.getWidth();int height = this.getHeight();BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_3BYTE_BGR);Graphics2D g2d = (Graphics2D) bi.createGraphics();g2d = (Graphics2D) bi.getGraphics();try{JFileChooser chooser = new JFileChooser(".//");chooser.setAcceptAllFileFilterUsed(false);chooser.setSelectedFile(new File("1.jpg"));int status = chooser.showSaveDialog(graph);if (status == JFileChooser.APPROVE_OPTION){File saveFile = chooser.getSelectedFile();if (saveFile.exists()){String prompt = "The file "+ saveFile.getName()+ " already exists. Do you want to replace the existing file";int ret = JOptionPane.showConfirmDialog(graph, prompt,"Warning", JOptionPane.YES_NO_OPTION);if (ret == JOptionPane.NO_OPTION){return;}}saveFile = new File(saveFile.getAbsoluteFile() + ".jpg");FileOutputStream fos = new FileOutputStream(saveFile);JPEGImageEncoder jpegEncoder =JPEGCodec.createJPEGEncoder(fos);jpegEncoder.encode(bi);fos.flush();fos.close();}}catch (IOException ex){JOptionPane.showMessageDialog(graph, "IO Error, operation failed\n"+ ex.toString(), "Error", JOptionPane.PLAIN_MESSAGE);}}private Point Point(int i, int j){Point point = new Point(i, j);return point;}}class EveryPoint implements Serializable{int x, y;Color col;int tool;int boarder;private static final long serialVersionUID = 1L;EveryPoint(int x, int y, Color col, int tool, int boarder) {this.x = x;this.y = y;this.col = col;this.tool = tool;this.boarder = boarder;}}5.运行结果。
java课程设计简单的画画板

java课程设计简单的画画板一、教学目标本章节的教学目标旨在让学生掌握Java编程基础,能够使用Java语言实现一个简单的画画板应用程序。
具体目标如下:1.知识目标:–了解Java编程语言的基本语法和结构;–掌握面向对象编程的基本概念,如类、对象、封装、继承和多态;–学习Java标准库中常用的数据结构和API;–理解图形用户界面(GUI)编程的基本原理。
2.技能目标:–能够使用Java编程语言编写简单的程序;–能够运用面向对象编程思想设计和实现程序;–能够利用Java标准库中的API解决实际问题;–能够使用Java GUI编程工具创建用户界面。
3.情感态度价值观目标:–培养学生的编程思维和解决问题的能力;–激发学生对计算机科学和编程的兴趣;–培养学生的团队合作和沟通能力,通过小组合作完成项目。
二、教学内容本章节的教学内容将按照以下大纲进行和安排:1.Java编程基础:介绍Java编程语言的基本语法和结构,包括变量、数据类型、运算符、控制语句等。
2.面向对象编程:讲解面向对象编程的基本概念,如类、对象、封装、继承和多态,并通过实例进行演示和练习。
3.Java标准库:学习Java标准库中常用的数据结构和API,如字符串、数组、集合、数学函数等。
4.图形用户界面(GUI)编程:介绍Java GUI编程的基本原理,学习使用Swing和AWT库创建用户界面,包括按钮、文本框、画布等组件。
5.项目实践:通过小组合作,设计和实现一个简单的画画板应用程序,让学生综合运用所学知识解决实际问题。
三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用多种教学方法:1.讲授法:教师讲解Java编程语言的基本语法和结构,面向对象编程的概念,以及图形用户界面(GUI)编程的原理。
2.案例分析法:通过分析实际案例,让学生理解面向对象编程的思想和应用,以及如何使用Java标准库中的API解决实际问题。
3.实验法:学生通过动手实践,编写Java程序,创建用户界面,并完成项目实践,以巩固所学的知识和技能。
用java实现的一个简单的画板程序

用java实现的一个简单的画板程序一个实现简单画板功能的java程序,可以画直线,长方形,椭圆,曲线。
主类import java.awt.Color;import javax.swing.*;public class painter {public static void main(String [] args){JPanel jpl = new Board();JFrame painter =new JFrame();painter.add(jpl);painter.setBackground(Color.WHITE);painter.setTitle("Painter");painter.setSize(400,200);painter.setLocationRelativeTo(null);painter.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);painter.setVisible(true);}}加了选择事件的画板import java.awt.*;import javax.swing.*;import java.awt.event.*;@SuppressWarnings("serial")public class Choose extends Board{JRadioButton jrb1=new JRadioButton("Line");JRadioButton jrb2=new JRadioButton("Rectangle");JRadioButton jrb3=new JRadioButton("Oval");JRadioButton jrb4=new JRadioButton("Curve");JButton jbt = new JButton("Clear");public Choose(){JPanel jp1=new JPanel();jp1.setLayout(new GridLayout(5,1,5,5));jp1.add(jrb1);jp1.add(jrb2);jp1.add(jrb3);jp1.add(jrb4);jp1.add(jbt);add(jp1);ButtonGroup group = new ButtonGroup();group.add(jrb1);group.add(jrb2);group.add(jrb3);group.add(jrb4);ActionListener chooseListener = new chooseListener(); MouseListener clearListener = new clearListener();jrb1.addActionListener(chooseListener);jrb2.addActionListener(chooseListener);jrb3.addActionListener(chooseListener);jrb4.addActionListener(chooseListener);jbt.addMouseListener(clearListener);}class chooseListener implements ActionListener{ public void actionPerformed(ActionEvent e) {if(e.getSource()==jrb1){drawLine();System.out.println("line");}else if(e.getSource()==jrb2){drawRectangle();System.out.println("rec");}else if(e.getSource()==jrb3){drawOval();System.out.println("oval");}else if(e.getSource()==jrb4){drawCurve();System.out.println("curve");}}}class clearListener extends MouseAdapter{public void mouseClicked(MouseEvent e){ drawClear();}}}画板import java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;import java.awt.image.ImageProducer;import javax.swing.*;@SuppressWarnings("serial")public class Board extends JPanel{ JRadioButton jrb1=new JRadioButton("Line"); JRadioButton jrb2=new JRadioButton("Rectangle"); JRadioButton jrb3=new JRadioButton("Oval");JRadioButton jrb4=new JRadioButton("Curve");JButton jbt = new JButton("Clear");BufferedImage bi=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);;int x=-1;int y=-1;int [] location=new int[4];int mode=0;boolean ifNotCurveClicked=false;boolean ifCurveClicked=false;public Board(){setLayout(new BorderLayout());JPanel jp1=new JPanel();jp1.setLayout(new GridLayout(5,1,5,5));jp1.add(jrb1);jp1.add(jrb2);jp1.add(jrb3);jp1.add(jrb4);jp1.add(jbt);add(jp1,BorderLayout.WEST);ButtonGroup group = new ButtonGroup();group.add(jrb1);group.add(jrb2);group.add(jrb3);group.add(jrb4);ActionListener chooseListener = new chooseListener();MouseListener clearListener = new clearListener();jrb1.addActionListener(chooseListener);jrb2.addActionListener(chooseListener);jrb3.addActionListener(chooseListener);jrb4.addActionListener(chooseListener); jbt.addMouseListener(clearListener);}public void drawLine(){ addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ location[0]=e.getX();location[1]=e.getY();}public void mouseReleased(MouseEvent e){ if(!ifCurveClicked){location[2]=e.getX();location[3]=e.getY();mode=1;repaint();}}});}public void drawRectangle(){ addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ location[0]=e.getX();location[1]=e.getY();}public void mouseReleased(MouseEvent e){ if(!ifCurveClicked){location[2]=e.getX();location[3]=e.getY();mode=2;repaint();}}});}public void drawOval(){ addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ location[0]=e.getX();location[1]=e.getY();}public void mouseReleased(MouseEvent e){if(!ifCurveClicked){location[2]=e.getX();location[3]=e.getY();mode=3;repaint();}}});}public void drawCurve(){ addMouseMotionListener(new MouseAdapter(){ public void mouseDragged(MouseEvent e){if(!ifNotCurveClicked){x=e.getX();y=e.getY();mode=4;repaint();}}});}public void drawClear(){mode=5;repaint();}protected void paintComponent(Graphics g){switch(mode){case(1):g.drawLine(location[0],location[1],location[2],location[3]);break;case(2):if(location[0]<=location[2]&&location[1]<location[3])<p="">g.drawRect(location[0],location[1],location[2]-location[0],location[3]-location[1]);else if(location[0]<=location[2]&&location[1]>=location[3])g.drawRect(location[0],location[3],location[2]-location[0],location[1]-location[3]);else if(location[0]>location[2]&&location[1]<=location[3])g.drawRect(location[2],location[1],location[0]-location[2],location[3]-location[1]);elseg.drawRect(location[2],location[3],location[0]-location[2],location[1]-location[3]);break;case(3):if(location[0]<=location[2]&&location[1]<location[3])<p="">g.drawOval(location[0],location[1],location[2]-location[0],location[3]-location[1]);else if(location[0]<=location[2]&&location[1]>=location[3])g.drawOval(location[0],location[3],location[2]-location[0],location[1]-location[3]);else if(location[0]>location[2]&&location[1]<=location[3])g.drawOval(location[2],location[1],location[0]-location[2],location[3]-location[1]);elseg.drawOval(location[2],location[3],location[0]-location[2],location[1]-location[3]);break;case(4):g.fillOval(x,y,2,2);break;case(5):setBackground(Color.WHITE);super.paintComponent(g);break;}}class chooseListener implements ActionListener{public void actionPerformed(ActionEvent e) {if(e.getSource()==jrb1){ifNotCurveClicked=true;ifCurveClicked=false;drawLine();}else if(e.getSource()==jrb2){ifNotCurveClicked=true;ifCurveClicked=false;drawRectangle();}else if(e.getSource()==jrb3){ ifNotCurveClicked=true; ifCurveClicked=false;drawOval();}else if(e.getSource()==jrb4){ ifNotCurveClicked=false; ifCurveClicked=true;drawCurve();}}}class clearListener extends MouseAdapter{ public void mouseClicked(MouseEvent e){ drawClear();}}}</location[3])<></location[3])<>。
小小画图板开发——JAVA课程设计报告

《移动互联开发》课程设计报告题目:小小画图板开发班级:姓名:学号:组员:目录一:程序设计的目的和意义二:程序设计:(一):程序基本组成框架和结构(二):画图板相关操作三:系统功能设计分析四:程序结构说明五:程序绘图效果示意图六:程序源代码及其分析说明七:总结小小画图板开发一:程序设计的目的和意义用过微软Windows操作系统的人一定都对Windows自带的画图板非常的熟悉。
同图像处理软件界的“大哥大”Photoshop比起来,它虽然不及Photoshop的功能强大、内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑、简单实用等其它绘图软件所不具备的优点。
同时它的风格也被许多其它绘图软件所效仿。
通过本绘图程序的编写,我们可以看到如何运用自己已经掌握的知识,自己动手来完成一个Java绘图程序,通过整个流程的熟悉以及对程序组织结构和框架的理解,也可以极大的促进我们对Java程序和面向对象程序设计的认识和掌握。
通过本次课程的学习,我们可以更加系统地学习和了解如何从整体上设计和实现一个程序,这对我们今后学习、开发和设计更大更复杂的程序有着很大的帮助。
二:程序设计本程序完成的是一个类似于Windows画图板的绘图程序。
由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项:1.新建一个空白图形文件:用于绘制新的图形。
2.打开或保存一个图形文件,便于对图形文件的管理。
3.绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。
4.可以用鼠标在绘图面板上单击拖动进行随笔画。
5.橡皮擦:可以将已绘制好的图形擦掉。
6.添加文字:可以在绘图区域内添加文字。
7.选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。
本程序中包括:宋体、隶书、华文彩云、仿宋_GB2312、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。
JAVA课程设计(画图板软件开发和设计)

功能测试:确保所有功能正常工作 性能测试:评估系统性能,如响应时间、吞吐量等 兼容性测试:确保在不同操作系统和浏览器上正常运行 用户体验测试:评估用户界面设计、易用性等
硬件要求:CPU、内存、硬盘等 软件要求:JDK、Tomcat、数据库等 部署步骤:安装JDK、Tomcat、数据库等,配置环境变量,部署项目 运行步骤:启动Tomcat,访问项目地址,进行测试和调试
优化网络 传输:减 少网络延 迟,提高 数据传输 速度
优化数据 库访问: 减少数据 库查询次 数,提高 查询效率
优化系统 日志:减 少日志记 录,提高 系统运行 效率
优化系统 安全:加 强系统安 全防护, 提高系统 安全性能
项目成果:成功开发出画图板 软件,实现了基本的绘图功能
项目目标:开发一个画图板 软件,实现基本的绘图功能
数据库索引:用户ID、画图板ID等
数据库备份和恢复策略:定期备份,异地 存储,灾难恢复等
数据库安全:用户权限管理,数据加密, 访问控制等
画笔算法:实现画笔的绘制和移动
图形选择算法:实现图形的选择和绘制
橡皮擦算法:实现橡皮擦的擦除功能
颜色选择算法:实现颜色的选择和切换
撤销和重做算法:实现撤销和重做操作
项目经验:在开发过程中,学 习了JAVA编程、图形绘制、用
户界面设计等知识
项目展望:未来可以继续优化 画图板软件,增加更多功能,
提高用户体验
功能实现:部分功 能实现不够完善, 需要进一步优化
用户体验:界面 设计不够友好, 需要改进
性能优化:程序 运行速度较慢, 需要优化
团队协作:团队成 员之间沟通不够顺 畅,需要加强团队 协作能力
画图板功 能:支持 绘制各种 图形,如 直线、曲 线、矩形、 圆形等
JAVA简单画板程序设计实验报告

J A V A简单画板程序设计实验报告As a person, we must have independent thoughts and personality.JAVA期末画板实验报告课程题目:运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。
设计思想:1.进行界面设计2.进行算法实现3.运行调试4.总结问题设计过程:A.界面设计B.新建一个Jframe容器,然后定义一个panel( Panel convas2),convas2是工具栏。
用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。
完成界面设计。
add(canvas2,;Panel canvas2 = new Panel();添加工具按键Panel canvas2 = new Panel();Button btn1 = new Button("直线");Button btn2 = new Button("椭圆");Button btn3 = new Button("矩形");Button btn4 = new Button("清除");Button btn5 = new Button("画笔");Button btn6 = new Button("橡皮");Choice choice = new Choice();Choice choice1 = new Choice();(choice);(choice1);(btn1);(btn2);(btn3);(btn4);(btn5);(btn6);在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。
1.画笔的大小:("1");("3");("5");("7");("9");2.画笔颜色("黑色");("蓝色");("红色");("黄色");("绿色");3展示画板C.算法实现运用画板,首先要对工具栏按键和鼠标进行监听,然后对监听进行响应。
java涂鸦板课程设计

java涂鸦板课程设计一、课程目标知识目标:1. 学生能掌握Java基本语法,如变量声明、数据类型、运算符和表达式。
2. 学生能理解并运用面向对象编程的基本概念,包括类、对象、构造方法和继承。
3. 学生能掌握Java中的图形用户界面(GUI)编程,使用Swing组件设计图形界面。
技能目标:1. 学生能够独立编写简单的Java程序,实现基本涂鸦板功能,如绘图、清除、选择画笔颜色和粗细。
2. 学生通过实际操作,培养解决问题的能力,学会调试和修改程序中的错误。
3. 学生能够运用所学知识,进行创新设计,开发具有个性化的涂鸦板功能。
情感态度价值观目标:1. 学生培养对编程的兴趣,认识到编程在现实生活中的应用,激发学习积极性。
2. 学生在团队协作中学会分享和交流,培养合作意识和团队精神。
3. 学生通过课程学习,认识到编程可以培养逻辑思维和创新能力,提高自身综合素质。
课程性质:本课程为信息技术课程,结合Java编程语言,旨在培养学生的编程兴趣和实际操作能力。
学生特点:本课程针对初中生,学生对新鲜事物充满好奇,动手能力强,但注意力集中时间有限,需要激发学习兴趣。
教学要求:注重实践操作,结合实际案例进行教学,引导学生主动探索,培养编程思维和解决问题的能力。
通过分解课程目标,确保学生能够掌握Java编程的基本知识和技能,实现教学目标。
二、教学内容1. Java基本语法:- 变量声明与赋值- 数据类型与类型转换- 运算符与表达式- 控制结构(顺序、选择、循环)2. 面向对象编程基础:- 类的定义与使用- 对象的创建与引用- 构造方法与封装- 继承与多态3. Java图形用户界面(GUI)编程:- Swing组件概述- 常用容器组件(JFrame、JPanel等)- 常用绘图组件(JButton、JColorChooser等)- 事件处理机制4. 涂鸦板功能实现:- 设计涂鸦板界面- 绘图功能实现(画笔、线条、矩形等)- 清除与撤销功能实现- 画笔颜色、粗细选择功能实现5. 实践与创新:- 编程实现基本涂鸦板功能- 调试与优化程序- 拓展功能(如保存、加载、分享作品等)- 个性化设计(自定义画笔、背景等)教学内容依据课程目标和教材章节进行组织,确保教学内容的科学性和系统性。
Java实现简易画图板

Java实现简易画图板本⽂实例为⼤家分享了Java实现简易画图板的具体代码,供⼤家参考,具体内容如下这是Windows系统⾃带的画图板,我们就是模仿着⽤Java去写⼀个简易版的画图板。
效果图图中的四个颜⾊按钮是可以配合要画的图形⽽改变线条颜⾊的,⽽且每次打开颜⾊按钮的颜⾊都是随机的。
⽬前画图什么的都没什么问题,只是⼀些细节没有去完全修复了,但不影响使⽤,再加上近段时间有点太忙,就没有去完善相关细节了,有兴趣的⼩伙伴可以评论区帮忙提出指正意见哈。
画图板UI界⾯代码import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import java.awt.Graphics;import java.util.Random;public class DrawGraphics {Random rand=new Random();public static void main(String []args){DrawGraphics draw=new DrawGraphics();draw.displayUI();}public JButton getButton(String s,DrawListener dl,boolean flag){JButton btn=new JButton();//每个按钮的尺⼨Dimension dim=new Dimension(200,50);//如果flag为true,创建⽂字按钮,否则创建颜⾊按钮if(flag){btn=new JButton(s);}else{Color c= new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256));btn.setBackground(c);}btn.setPreferredSize(dim);btn.addActionListener(dl);return btn;}public void displayUI(){JFrame frame=new JFrame();FlowLayout f1=new FlowLayout();frame.setTitle("画图板");frame.setSize(1000,1000);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);frame.setLayout(f1);frame.setResizable(false);DrawListener dl=new DrawListener();String []name={"直线","矩形","圆","三⾓形"};for(int i=0;i<name.length;i++){frame.add(getButton(name[i],dl,true));}for(int i=0;i<name.length;i++){frame.add(getButton("",dl,false));}frame.addMouseListener(dl);frame.setVisible(true);// 获取画笔 --- 必须要放在可视化之后Graphics g=frame.getGraphics();dl.g=g;dl.btnstr=name[0];=name;}}画图板UI监听器代码import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JButton;import java.awt.Color;import java.awt.Graphics;public class DrawListener implements MouseListener,ActionListener{ Graphics g;int x1,x2,y1,y2;int x3,x4,x5,y3,y4,y5;int count=0;String []name;String btnstr;int i;@Overridepublic void actionPerformed(ActionEvent e) {btnstr=e.getActionCommand();if(btnstr.equals("")){JButton btn=(JButton)e.getSource();Color btnColor=btn.getBackground();g.setColor(btnColor);}else {for(i=0;i<name.length;i++){if(btnstr.equals(name[i]))break;}}}@Overridepublic void mouseClicked(MouseEvent e) {if(btnstr.equals(name[3])||btnstr.equals("")){g.drawOval(e.getX()-4, e.getY()-4, 8, 8);if(count==0){x3=e.getX();y3=e.getY();count++;}else if(count==1){x4=e.getX();y4=e.getY();g.drawLine(x3, y3, x4, y4);count++;}else if(count==2){x5=e.getX();y5=e.getY();g.drawLine(x3, y3, x5, y5);g.drawLine(x4, y4, x5, y5);count=0;}}}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stubx1=e.getX();y1=e.getY();}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stubx2=e.getX();y2=e.getY();if(btnstr.equals(name[0])||btnstr.equals("")){g.drawLine(x1, y1, x2, y2);}else if(btnstr.equals(name[1])||btnstr.equals("")){g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));}else if(btnstr.equals(name[2])||btnstr.equals("")){g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));}}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java简易画图板

华北科技学院课程设计说明书班级: 网络B101设计题目: 画图板软件开发和设计评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:____评阅教师:_____目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2 需求分析 (1)2.1 功能需求 (1)2.2 系统的开发运行环境 (2)3 总体设计 (2)3.1 系统体系结构设计 (2)3.2系统功能模块及主要类设计 (3)4 详细设计与实现 (6)4.1 菜单栏模块 (6)4.2 文字字型工具栏模块 (7)4.3 工具栏模块 (8)4.4 颜色选择面板模块 (10)4.5 鼠标状态栏模块 (12)4.6 画图区域以及整体布局模块 (13)5 小结和展望 (15)参考文献 (17)附录 (17)使用说明书 (17)1引言1.1课程设计选题《画图板软件开发和设计》1.2课程设计的目的使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。
1.3本选题的设计背景平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。
Java画图板课程设计报告(DOC)

目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2 需求分析 (1)2.1 功能需求 (1)2.2 软件开发运行环境 (1)3 总体设计 (2)3.1 软件结构设计 (2)3.1.1 结构设计 (2)3.2软件功能模块及主要类设计 (2)3.2.1功能描述 (2)3.2.2总体结构图 (3)3.2.3主要类设计 (3)4 详细设计与实现 (4)4.1 主界面 (4)4.1.1主界面功能设计 (4)4.1.2主界面设计 (4)4.1.3主界面主要代码 (5)4.2 菜单栏 (6)4.2.1菜单栏功能设计 (6)4.2.2菜单栏界面设计 (6)4.2.3菜单栏主要代码 (9)4.3 工具栏 (10)4.3.1工具栏功能设计 (10)4.3.2工具栏界面设计 (10)4.3.3工具栏主要代码 (10)4.4 画图区 (11)4.4.1画图区功能设计 (11)4.4.2画图区界面设计 (12)4.4.3画图区主要代码 (12)4.5 状态栏 (12)4.5.1状态栏功能设计 (12)4.5.2状态栏设计 (12)4.5.3状态栏代码 (12)5 小结和展望 (13)参考文献 (14)附录 (15)使用说明书 (15)源程序清单 (15)1引言1.1课程设计选题《画图板软件开发和设计》1.2课程设计的目的巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java 程序的水平。
1.3本选题的设计背景日常生活、学习中我们经常需要画图,简单的画图我们可以手工画图,但往往还是不能满足需求。
因此,借助计算机准确而快速的画图就十分有必要了。
好的画图工具能够很好的完成日常生活中的各种画图工作。
学习了Java语言后设计开发一个画图软件是对Java语言学习的巩固以及提高。
java课程设计画板

java课程设计画板一、教学目标本课程旨在通过Java编程语言实现一个简单的画板应用程序,让学生掌握以下知识目标:1.理解Java编程语言的基本语法和结构。
2.掌握图形用户界面(GUI)的设计和实现。
3.熟悉Java绘图API的使用。
4.能够使用Java编写简单的应用程序。
5.能够设计和实现具有基本功能的画板应用程序。
6.能够运用Java绘图API进行基本的图形绘制。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生解决问题的能力,提高学生的创新意识。
3.培养学生团队合作的精神,提高学生的沟通协作能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Java编程语言基本语法和结构。
2.图形用户界面(GUI)的设计和实现。
3.Java绘图API的使用。
具体的教学大纲安排如下:第1-2课时:Java编程语言基本语法和结构。
第3-4课时:图形用户界面(GUI)的设计和实现。
第5-6课时:Java绘图API的使用。
三、教学方法为了达到本课程的教学目标,将采用以下教学方法:1.讲授法:用于讲解Java编程语言基本语法和结构,以及图形用户界面(GUI)的设计和实现。
2.案例分析法:通过分析实际案例,让学生了解和掌握Java绘图API的使用。
3.实验法:安排学生在实验室进行实际操作,锻炼学生的编程能力和实践能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,将准备以下教学资源:1.教材:Java编程基础,用于引导学生学习Java编程语言的基本语法和结构。
2.多媒体资料:包括PPT、教学视频等,用于辅助讲解和演示。
3.实验设备:计算机、网络等,用于学生实际操作和实验。
4.在线编程平台:如LeetCode、牛客网等,用于学生练习和巩固所学知识。
五、教学评估为了全面、客观、公正地评估学生的学习成果,将采取以下评估方式:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津商业大学宝德学院Java程序设计课程报告2013—2014学年第二学期题目迷你画板的开发与研究学号12501116 12501114 学生姓名吴承祖陈磊所在专业电子商务所在班级1201目录1 1 引言.................................................................1.1 设计目的............................................................. 11.2 设计说明............................................................. 22 总体设计............................................................. 2 2.1 功能模块设计......................................................... 32.2 流程图设计........................................................... 43 详细设计............................................................. 5 3.1 迷你画板的布局设计................................................... 5 3.2 工具栏的设计........................................................ 5 3.3 状态栏的的设计...................................................... 53.4 绘图区域的设计...................................................... 64 测试与运行...........................................................7 4.1 程序测试.............................................................74.2 程序运行.............................................................75 总结.................................................................10 参考文献................................................................111 引言本项目设计开发了简易的迷你画板,主要的开发工具是JDK(JAVA DEVELOP KIT)已经JAVA的IDE(INTERGRATED DEVELOPMENT ENVIRONMENT) –ECLIPSE。
项目的设计并不复杂,代码也不过仅仅数百行,但是对于身为JAVA初学者的我们来说,也并不是一个轻松写意的工作。
对JDK中各种类库还不熟悉的我们,往往做一会,便不得不去网上,图书馆查阅各种资料。
但是,毫无疑问,这个项目对我们的帮助也是巨大的,完成了这个项目以后,不仅仅是对JAVA各种类更加熟悉了,而且,设计程序的思维也变得更加活跃而富有想象力。
现在的我们,更加熟悉程序的开发流程,也更明白的程序开发所需的准备工作怎么做,这为我们以后的工作,打下了坚实的基础。
实践出真知,是真理。
1.1 设计目的本次设计迷你画板是一个画图类型的程序,用户可以在画板上绘制任何想要的绘制的图形、文字,是一个很有趣的程序。
具体功能如下:(1)程序的图形界面由菜单栏、工具栏、绘制界面组成。
(2)用户可以在菜单栏选择操作,新建文件,保存文件或者打开文件。
用户也可以在菜单栏对绘制属性进行一些操作,如调整画笔的粗细,画笔的颜色等。
(3) 用户想要绘制图形,可以直接用鼠标在绘图界面上面绘制,默认的画笔工具是铅笔。
(4) 用户可以在工具栏选择想绘制的图形,如选择矩形工具可以绘制矩形,选择实心矩形工具可以绘制实心矩形,矩形内部的颜色取决于画笔颜色。
(5) 工具栏中带有文字工具,用户点击文字工具后,用鼠标选择想要绘制文字的位置后,会弹出一个会话框,提示你输入想要绘制的文字。
文字的大小和颜色取决于当前画笔的大小和颜色。
用户也可以在工具栏选择字体(黑体,宋体等)以及文字的变形(斜体,粗体)。
(6)绘制完成后用户可以在工具栏或者菜单栏选择保存文件,文件以无后缀的文件形式保存。
保存完成后,用户可以在软件用打开文件打开以前绘制的图形。
用户也可以选择新建文件来打开一个新的画布,但是,若是之前所绘制的图形没有保存,则被丢弃。
1.2 设计说明本程序采用Java程序设计语言,在Eclipse平台下编辑、编译与调试。
具体程序由2人组成的小组开发而成。
小组成员的具体分工如表1所示:2总体设计2.1 功能模块设计本程序需实现的主要功能有:(1) 用户可以自行选择工具,并绘制想要的图形。
(2) 实现由工具栏,可以自行选择所需工具。
(3) 用户可以自行选择画笔颜色,以及画笔大小。
(4) 用户可打开,新建,保存文件。
程序的总体功能如图1所示:图1 总体功能图2.2 流程图设计程序总体流程如图2所示:图2 总体流程图3详细设计3.1 迷你画板的布局设计系统的整体布局为:BorderLayout布局, NORTH位置是工具栏buttonPanel,SOUTH是鼠标状态栏statusBar(用于显示鼠标当前状态【点击,拖拽,移动,放开,坐标】),CENTER是绘图区域drawingArea(鼠标在上面绘制图形)3.2 工具栏buttonPanel的设计工具栏buttonPanel的设计使用了JToolBar类,在buttonPanel的上面add 添加了十余个button类组件,对象上的文本为工具的名字。
主要设计方法:首先新建一个JButton类的数组choice[],然后使用for循环对数组内放进JButton对象,然后调用JButton对象的setText()方法,设置按钮上显示的文本,便于用户明白每个按钮分别代表哪个工具。
完成界面工具栏的界面设计后,我们再一次给每个按钮注册监听器,来实现点击按钮后的功能。
由于点击按钮激活的事件都是ActionEvent,所以我们可以给工具栏所有的按钮注册同一个ActionListener监听器,然后用条件选择语句判断事件源来调用不同方法实现不同按钮的不同功能。
3.3 状态栏statusBar的设计获取当前画板上的MouseEvent e,通过e.getX(),e.getY(),当前激活鼠标事件的不同方法(如MouseMove(),MouseReleased()),来生成一个描述当前鼠标状态的字符串。
最后使用statusBar的setText()方法,将字符串显示到statusBar上。
3.4 绘制图案界面drawingAreadrawingArea是一个DrawPanel类的对象,DrawPnel类是程序中自己定义的一个类,这个类是JPanel类的子类。
DrawPanel类的详细设计:成员方法:(1)public DrawPanel()在构造方法中完成鼠标指针,背景颜色以及监听器(MouseListener类mouseA,MouseMotin Listener类mouseB)的初始化。
(2).public void paintComponent(Graphic g)绘图方法,定义画笔后,根据事件源来判断,将画笔传入到各个工具对应的绘图类中,绘制对应的图案。
(3).void createNewItem()新建一个画图基本单元的程序段。
(4).public void chooseColor()选择当前颜色(5). public void setStroke()选择当前画笔的大小粗细(6).public void saveFile()保存文件程序段新建JFileChooser类的选择器fileChooser,然后调用fileChooser.showSaveDialog()的方法来显示保存对话框。
具体实现方法详见代码。
7. public void loadFile()打开文件8. newFile()新建文件9.main()方法新建MiniDrawPad()对象newPad,设置关闭监听器4测试与运行4.1 程序测试在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的迷你画板能够正常运行,功能已经基本接近WINDOWS自带的画图程序。
但是程序依然存在一些小bug,这些,在日后我们会继续优化,一一修复。
4.2 程序运行程序运行主界面如图9所示:图9 程序主界面程序主菜单如图10所示:绘图功能如图11所示:打开文件,如图12所示:图12 打开文件保存文件如图13所示:图13 保存文件5.总结这个迷你画板是模拟WINDOWS自带的画图工具制作,虽然功能并不复杂,但是对于我们来说,也不是一个小工程,有些问题,虽然不难,却因为不熟悉SWING和AWT,花费了很多的时间查找资料来解决。
完成了这个项目以后,我们收获了许多,首先第一点就是我们认识到了,JAVA的学习必须在实践中完成,闭门造车的死扣书本是不可能取得成就的。
其次,我们明白了程序开发之前,做好准备工作的重要性。
项目刚开始的时候,我们完全不知该如何入手,后来,我们用科学的方法,做好了程序的类图,设计流程。
之后的开发,才变得容易起来。
第三点,我们终于明白了“程序的开发百分之九十的时间是花在调试上的”这句话的意思。
软件刚完成的时候,大小BUG不断,最严重的时候,程序完全无法使用。
后期,我们花了大量的时间解决这些bug,最后才终于完成了这个程序。
程序的开发在于实践,实践才能造就人才,我们之后不会放弃,会继续开发更多更优秀的JAVA程序。
参考文献[1] 陈国君. JAVA 程序设计基础(第4版).清华大学出版社[2]互联网资料. 开源中国网站[3](美)Y.Daniel Liang 著李娜译 . Java语言程序设计-基础篇(原书第8版)。