功能综述复习、巩固Java讥占T1基刊好认进一挥对Java语言的理解和掌握课程设计为学生提供了一个既动手又动脑、独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力,培养学生在项目开发中团队合作精神、创新意识及能力。
实现简单绘图功能,具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。
(一)分析与设计说明本学期对于java语言的学习,本程序运用图形界面和绘图功能,均已学过利用Eclipse工具,采用java语言解决问题。
界面上方相应所需的菜单选项或下方的按钮,得到所需图形,完成功能的实现。
运行程序,输入图形类型,并输入两个坐标参数(不超过界面的大小),再选择程序(二)代码分析/图形界面的实现(图形界面包括2个标签,4个菜单,6个按钮,5个文本组件)//导入程序所需要的包import java.awt.*;import java.awt.eve nt.*;import javax.swi ng.*;public class Draw exte nds JFrame impleme nts Actio nListe ner{private static fin al l ong serialVers ionUID = 1L;private static final int WIDTH=600;private static final int HEIGHT=600;JMe nuBar men ubar;JMe nu men u1,me nu 2,me nu 3,me nu4;JMe nultem item1,item2,item3,item4,item5,item6;JButton butt on 1,butt on 2,butto n3,butto n4 ,butto n5,butto n6;JLabel label1;Mypa nel pan e1= new Mypa nel();DrawCa nvas JD=n ull;//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。
public Draw(){super("控制绘图");setSize(WIDTH,HEIGHT);Container c=getC onten tPa ne();JD=new DrawCa nvas();JPa nel pane2=new JPa nel(); Compe nt(c, pan e2);}private void Compe nt(C ontainer c, JPa nel pan e2) {men ubar =new JMe nuBar();menu仁new JMenu(”直线");menu2=new JMenu(” 椭圆");menu3=new JMenu(” 矩形");menu4=new JMenu(” 多边形");item仁new JMe nultem(”直线");item2=new JMen ultem(”空心椭圆“item3=new JMen ultem(”实心椭圆“item 4=new JMe nultem(”空心矩形“item5=new JMe nultem(”实心矩形“item6=new JMen ultem(”多边形");iteml.addActio nListe ner(this); item2.addActio nListe ner(this); item3.addActi on Listener(this); item4.addActio nListe ner(this); item5.addActi on Liste ner(this); item6.addActi onListe ner(this); label 仁new JLabel("");men u1.add(item1);menu 2.add(item2);menu 2.addSeparator();menu 2.add(item3);menu 3.add(item4);menu 3.addSeparator();menu 3.add(item5);menu 4.add(item6);menu bar.add(me nu1);menu bar.add(me nu 2); menu bar.add(me nu 3);menu bar.add(me nu 4); setJMe nuBar(me nu bar);butt on 1= new JButt on (”直线");button2=new JButton(”空心椭圆");button3=new JButton(”实心椭圆");button4=new JButton(”空心矩形");button5=new JButton(”实心矩形");button6=new JButton(”多边形");pan e2.add(butt on 1); pan e2.add(butt on 2); pan e2.add(butt on 4); pan e2.add(butt on 6);pan e2.add(label1);pan e2.add(butt on 3); pan e2.add(butt on 5);butt on 1.addAct ion Liste ner(this); butt on 2.addAct ion Liste ner(this); butt on 3.addAct ion Liste ner(this); butt on4 .addAct ion Liste ner(this); butt on 5.addAct ion Liste ner(this); butt on6.addAct ion Liste ner(this);c.add(pa ne1,BorderLayout.NORTH);c.add(pa ne2,BorderLayout.SOUTH);c.add(JD,BorderLayout.CENTER);pa ne2.setLayout( new GridLayout(2,5,20,10));}/*Draw 继承了JFrame,因此可以显示,首先声明标签、菜单、按钮和一个JFrame窗口。
然床通过构建标签、菜且、按钮菜单项添加理菜且屮。
标签、菜单、按钮添加理窗口容器中,设置容器的大小及添加按钮和菜单事件监听者。
*//*处理事件监听器事件*/public void acti on Performed(Act ion Eve nt e) {int x1,y1,x2,y2;x1=I nteger.parsel nt(pa ne1.getA().getText());y1=I nteger.parse In t(pa ne1.getB().getText());x2=I nteger.parse In t(pa ne1.getC().getText());y2=I nteger.parse In t(pa ne1.getD().getText());int x3[]={280,120,50,90,210,280};int x4[]={20,50,100,110,70,20};int n=5;//当监听器监听到鼠标点击菜单项实心椭圆时,绘制实心椭圆图形else if(e.getSource()==item3){if(JD!=null) {JD.setL in e(0);JD.setOval(0);JD.setfillOval(1);JD.setRect(0); JD.setfillRect(O);JD.setPolygo n(0);JD.setPositio n(x1,y1,x2,y2);JD.repai nt();}}//当监听器监听到鼠标点击菜单项直线时,绘制直线图形//当监听器监听到鼠标点击菜单项空心椭圆时,绘制空心椭圆图形//当监听器监听到鼠标点击菜单项空心矩形时,绘制空心矩形图形//当监听器监听到鼠标点击菜单项实心矩形时,绘制实心矩形图形//当监听器监听到鼠标点击菜单项多边形时,绘制多边形图形//当监听器监听到鼠标点击按钮直线时,绘制直线图形if(e.getSource()==butt on 1){if(JD!=null) {JD.setL in e(1);JD.setOval(0);JD.setfillOval(0);JD.setRect(0);JD.setfillRect(O);JD.setPolygo n(0);JD.setPositio n(x1,y1,x2,y2);JD.repai nt();}}//当监听器监听到鼠标点击按钮空心椭圆时,绘制空心椭圆图形//当监听器监听到鼠标点击按钮实心椭圆时,绘制实心椭圆图形//当监听器监听到鼠标点击按钮空心矩形时,绘制空心矩形图形//当监听器监听到鼠标点击按钮实心矩形时,绘制实心矩形图形//当监听器监听到鼠标点击按钮多边形时,绘制多边形图形//3.主函数的实现://在主函数中创建了一个jf ft'l -.用.,:产半国形界址。
愷置具」临利丿、7不4戈变.!」:-¥ public static void main( Stri ng []args){JFrame jf=new Draw();jf.setDefaultCloseOperati on (JFrame.EXIT_ON_CLOSE);jf.setResizable(false);jf.setVisible(true);}}//图形绘制的实现//导入该程序所需要的包import java.awt.*;import javax.swi ng.*;//DrawCa nvas实现图形的绘制(首说 F心梢I;:实心呦岡 F心护氏勺[心匕闿多也形)。
public class DrawCa nvas exte nds JPa nel{private static fin al l ong serialVers ionUID = 1L;int x1,y1,x2,y2;in t lin e,oval,filloval,rect,fillrect,polygo n;int x3[],x4[],n;public void setPositi on (i nt x1,i nt y1,i nt x2,i nt y2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;}public void setPolPosition(int x3[],int x4[],int n){this.x3=x3;this.x4=x4;this. n=n;}public void setL in e(i nt lin e){this.li ne=li ne;}public void setOval( int oval){this.oval=oval;}public void setfillOval(i nt filloval){this.filloval=filloval;}public void setRect(i nt rect){this.rect=rect;}public void setfillRect(i nt fillrect){this.fillrect=fillrect;}public void setPolygo n(i nt polygo n){this.polygo n=polyg on;}public void pain tComp onen t(Graphics g){g.setColor(getBackgro un d());g.fillRect(O,O,this.getWidth(),this.getHeight());g.setColor(Color.black);if(li ne==1){g.drawL in e(x1,y1,x2,y2);}else if(oval==1){g.drawOval(x1, y1, x2, y2);}else if(filloval==1){g.fillOval(x1,y1,x2,y2);}else if(rect==1){g.drawRect(x1, y1, x2, y2);}else if(fillrect==1){g.fillRect(x1,y1,x2,y2);}else if(polygo n==1){g.drawPolygo n( x3,x4 ,n);}}}//设置参数的实现//导入程序所需的包import java.awt.*;import javax.swi ng.*;//Mypa nel类中声明了标签并使得通过创建该类的实例将其添加到图形界面中public class Mypa nel exte nds JPa nel {private static fin al l ong serialVers ionUID = 1L;Label Iabel1,label2,label3,label4;TextField a,b,c,d,x;Mypa nel(){label2=new Label("请输入:"); label仁new Label("参数");/*参数最大可设置4 I - ■:、—600 600。