java课设用菜单按钮控制绘图.docx

上传人:b****3 文档编号:27169342 上传时间:2023-06-27 格式:DOCX 页数:30 大小:214.44KB
下载 相关 举报
java课设用菜单按钮控制绘图.docx_第1页
第1页 / 共30页
java课设用菜单按钮控制绘图.docx_第2页
第2页 / 共30页
java课设用菜单按钮控制绘图.docx_第3页
第3页 / 共30页
java课设用菜单按钮控制绘图.docx_第4页
第4页 / 共30页
java课设用菜单按钮控制绘图.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

java课设用菜单按钮控制绘图.docx

《java课设用菜单按钮控制绘图.docx》由会员分享,可在线阅读,更多相关《java课设用菜单按钮控制绘图.docx(30页珍藏版)》请在冰豆网上搜索。

java课设用菜单按钮控制绘图.docx

java课设用菜单按钮控制绘图

功能综述

复习、巩固Java语言的基础知识进一步加深对Java语言的理解和掌握课程设计为学生提供了一个既动手又动脑、独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力,培养学生在项目开发中团队合作精神、创新意识及能力。

实现简单绘图功能,具体要求:

画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。

(一)分析与设计说明

本学期对于java语言的学习,本程序运用图形界面和绘图功能,均已学过利用Eclipse工具,采用java语言解决问题。

 

运行程序,输入图形类型,并输入两个坐标参数(不超过界面的大小),再选择程序界面上方相应所需的菜单选项或下方的按钮,得到所需图形,完成功能的实现。

 

(二)代码分析

/图形界面的实现(图形界面包括2个标签,4个菜单,6个按钮,5个文本组件)

//导入程序所需要的包

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassDrawextendsJFrameimplementsActionListener{

privatestaticfinallongserialVersionUID=1L;

privatestaticfinalintWIDTH=600;

privatestaticfinalintHEIGHT=600;

JMenuBarmenubar;

JMenumenu1,menu2,menu3,menu4;

JMenuItemitem1,item2,item3,item4,item5,item6;

JButtonbutton1,button2,button3,button4,button5,button6;

JLabellabel1;

Mypanelpane1=newMypanel();

DrawCanvasJD=null;

//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。

publicDraw(){

super("控制绘图");

setSize(WIDTH,HEIGHT);

Containerc=getContentPane();

JD=newDrawCanvas();

JPanelpane2=newJPanel();

Compent(c,pane2);

}

privatevoidCompent(Containerc,JPanelpane2){

menubar=newJMenuBar();

menu1=newJMenu("直线");

menu2=newJMenu("椭圆");

menu3=newJMenu("矩形");

menu4=newJMenu("多边形");

item1=newJMenuItem("直线");

item2=newJMenuItem("空心椭圆");

item3=newJMenuItem("实心椭圆");

item4=newJMenuItem("空心矩形");

item5=newJMenuItem("实心矩形");

item6=newJMenuItem("多边形");

item1.addActionListener(this);

item2.addActionListener(this);

item3.addActionListener(this);

item4.addActionListener(this);

item5.addActionListener(this);

item6.addActionListener(this);

label1=newJLabel("");

menu1.add(item1);

menu2.add(item2);

menu2.addSeparator();

menu2.add(item3);

menu3.add(item4);

menu3.addSeparator();

menu3.add(item5);

menu4.add(item6);

menubar.add(menu1);

menubar.add(menu2);

menubar.add(menu3);

menubar.add(menu4);

setJMenuBar(menubar);

button1=newJButton("直线");

button2=newJButton("空心椭圆");

button3=newJButton("实心椭圆");

button4=newJButton("空心矩形");

button5=newJButton("实心矩形");

button6=newJButton("多边形");

pane2.add(button1);

pane2.add(button2);

pane2.add(button4);

pane2.add(button6);

pane2.add(label1);

pane2.add(button3);

pane2.add(button5);

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

button5.addActionListener(this);

button6.addActionListener(this);

c.add(pane1,BorderLayout.NORTH);

c.add(pane2,BorderLayout.SOUTH);

c.add(JD,BorderLayout.CENTER);

pane2.setLayout(newGridLayout(2,5,20,10));

}

/*Draw继承了JFrame,因此可以显示,首先声明标签、菜单、按钮和一个JFrame窗口。

然后通过构建标签、菜单、按钮菜单项添加到菜单中。

标签、菜单、按钮添加到窗口容器中,设置容器的大小及添加按钮和菜单事件监听者。

*/

/*处理事件监听器事件*/

publicvoidactionPerformed(ActionEvente){

intx1,y1,x2,y2;

x1=Integer.parseInt(pane1.getA().getText());

y1=Integer.parseInt(pane1.getB().getText());

x2=Integer.parseInt(pane1.getC().getText());

y2=Integer.parseInt(pane1.getD().getText());

intx3[]={280,120,50,90,210,280};

intx4[]={20,50,100,110,70,20};

intn=5;

//当监听器监听到鼠标点击菜单项实心椭圆时,绘制实心椭圆图形

elseif(e.getSource()==item3){

if(JD!

=null){

JD.setLine(0);

JD.setOval(0);

JD.setfillOval

(1);

JD.setRect(0);

JD.setfillRect(0);

JD.setPolygon(0);

JD.setPosition(x1,y1,x2,y2);

JD.repaint();

}

}

//当监听器监听到鼠标点击菜单项直线时,绘制直线图形

//当监听器监听到鼠标点击菜单项空心椭圆时,绘制空心椭圆图形

//当监听器监听到鼠标点击菜单项空心矩形时,绘制空心矩形图形

//当监听器监听到鼠标点击菜单项实心矩形时,绘制实心矩形图形

//当监听器监听到鼠标点击菜单项多边形时,绘制多边形图形

//当监听器监听到鼠标点击按钮直线时,绘制直线图形

if(e.getSource()==button1){

if(JD!

=null){

JD.setLine

(1);

JD.setOval(0);

JD.setfillOval(0);

JD.setRect(0);

JD.setfillRect(0);

JD.setPolygon(0);

JD.setPosition(x1,y1,x2,y2);

JD.repaint();

}

}

//当监听器监听到鼠标点击按钮空心椭圆时,绘制空心椭圆图形

//当监听器监听到鼠标点击按钮实心椭圆时,绘制实心椭圆图形

//当监听器监听到鼠标点击按钮空心矩形时,绘制空心矩形图形

//当监听器监听到鼠标点击按钮实心矩形时,绘制实心矩形图形

//当监听器监听到鼠标点击按钮多边形时,绘制多边形图形

//3.主函数的实现:

//在主函数中创建了一个jf窗口用于产生图形界面。

设置其可见和大小不可改变属性

publicstaticvoidmain(String[]args){

JFramejf=newDraw();

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setResizable(false);

jf.setVisible(true);

}

}

//图形绘制的实现

//导入该程序所需要的包

importjava.awt.*;

importjavax.swing.*;

//DrawCanvas实现图形的绘制(直线空心椭圆实心椭圆空心矩形实心矩形多边形)。

publicclassDrawCanvasextendsJPanel{

privatestaticfinallongserialVersionUID=1L;

intx1,y1,x2,y2;

intline,oval,filloval,rect,fillrect,polygon;

intx3[],x4[],n;

publicvoidsetPosition(intx1,inty1,intx2,inty2){

this.x1=x1;

this.y1=y1;

this.x2=x2;

this.y2=y2;

}

publicvoidsetPolPosition(intx3[],intx4[],intn){

this.x3=x3;

this.x4=x4;

this.n=n;

}

publicvoidsetLine(intline){

this.line=line;

}

publicvoidsetOval(intoval){

this.oval=oval;

}

publicvoidsetfillOval(intfilloval){

this.filloval=filloval;

}

publicvoidsetRect(intrect){

this.rect=rect;

}

publicvoidsetfillRect(intfillrect){

this.fillrect=fillrect;

}

publicvoidsetPolygon(intpolygon){

this.polygon=polygon;

}

publicvoidpaintComponent(Graphicsg){

g.setColor(getBackground());

g.fillRect(0,0,this.getWidth(),this.getHeight());

g.setColor(Color.black);

if(line==1){

g.drawLine(x1,y1,x2,y2);

}

elseif(oval==1){

g.drawOval(x1,y1,x2,y2);

}

elseif(filloval==1){

g.fillOval(x1,y1,x2,y2);

}

elseif(rect==1){

g.drawRect(x1,y1,x2,y2);

}

elseif(fillrect==1){

g.fillRect(x1,y1,x2,y2);

}

elseif(polygon==1){

g.drawPolygon(x3,x4,n);

}

}

}

//设置参数的实现

//导入程序所需的包

importjava.awt.*;

importjavax.swing.*;

//Mypanel类中声明了标签并使得通过创建该类的实例将其添加到图形界面中

publicclassMypanelextendsJPanel{

privatestaticfinallongserialVersionUID=1L;

Labellabel1,label2,label3,label4;

TextFielda,b,c,d,x;

Mypanel(){

label2=newLabel("请输入:

");

label1=newLabel("参数");

/*参数最大可设置4位不过上面的图像界面中设置的大小为600600。

故此设置的大小不应该超过600600600600。

*/

x=newTextField(4);

a=newTextField(4);

b=newTextField(4);

c=newTextField(4);

d=newTextField(4);

add(label2);

add(x);

add(label1);

add(a);

add(b);

add(c);

add(d);

}

publicTextFieldgetA(){

returna;

}

publicvoidsetA(TextFielda){

this.a=a;

}

publicTextFieldgetB(){

returnb;

}

publicvoidsetB(TextFieldb){

this.b=b;

}

publicTextFieldgetC(){

returnc;

}

publicvoidsetC(TextFieldc){

this.c=c;

}

publicTextFieldgetD(){

returnd;

}

publicvoidsetD(TextFieldd){

this.d=d;

}

}

/*

应该注意的是,多边形的参数是数组型给出,故为了简便,程序中已经设置好多变形的参

数,不论输入的参数是什么,显示的还是代码中已经设置好的参数的那个多边形。

参数一

二位为图形起点位置坐标,三四位位图形终点坐标分别为图形的左上角和右下角。

*/

(三)运行结果

例一:

输入“直线”和参数,选择直线菜单项,绘制图线为直线。

例二:

输入“空心椭圆”和参数,选择下方空心椭圆按钮,绘制图形为空心椭圆。

例三:

输入“实心矩形”和参数,选择下方实心矩形按钮,绘制图形为实心矩形。

例四:

输入“多边形”和参数,选择多边形菜单项,绘制图形为多边形。

结果分析:

1、当输入“直线”,并输入起始两点坐标参数,点击直线菜单项或直线按钮时,

绘制图形为直线。

2、当输入“空心椭圆”,并输入两点坐标参数,点击空心椭圆菜单项或空

心椭圆按钮时,绘制图形为空心椭圆。

3、当输入“实心椭圆”,并输入两点坐标参数,点击实心椭圆菜单项或实

心椭圆时按钮,绘制图形为实心椭圆。

4、当输入“空心矩形”,并输入对角线两点坐标参数,点击空心矩形菜单项或

空心矩形按钮时,绘制图形为空心矩形。

5、当输入“实心矩形”,并输入对角线两点坐标参数,点击实心矩形菜单项或

实心矩形按钮时,绘制图形为实心矩形。

6、当输入“多边形”,并输入两点坐标参数,点击多边形菜单项或多边形按钮

时,绘制图形为多边形。

(四)附录

附录一:

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassDrawextendsJFrameimplementsActionListener{

privatestaticfinallongserialVersionUID=1L;

privatestaticfinalintWIDTH=600;

privatestaticfinalintHEIGHT=600;//界面大小

JMenuBarmenubar;//菜单条

JMenumenu1,menu2,menu3,menu4;//菜单

JMenuItemitem1,item2,item3,item4,item5,item6;//菜单项

JButtonbutton1,button2,button3,button4,button5,button6;

JLabellabel1;

Mypanelpane1=newMypanel();

DrawCanvasJD=null;

//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。

publicDraw(){

super("控制绘图");//创建标题;

setSize(WIDTH,HEIGHT);

Containerc=getContentPane();//初始化容器;

JD=newDrawCanvas();

JPanelpane2=newJPanel();

Compent(c,pane2);

}

privatevoidCompent(Containerc,JPanelpane2){

menubar=newJMenuBar();

menu1=newJMenu("直线");

menu2=newJMenu("椭圆");

menu3=newJMenu("矩形");

menu4=newJMenu("多边形");//构造一个新JMenu,用提供的字符串作为其文本;

item1=newJMenuItem("直线");

item2=newJMenuItem("空心椭圆");

item3=newJMenuItem("实心椭圆");

item4=newJMenuItem("空心矩形");

item5=newJMenuItem("实心矩形");

item6=newJMenuItem("多边形");

item1.addActionListener(this);

item2.addActionListener(this);

item3.addActionListener(this);

item4.addActionListener(this);

item5.addActionListener(this);

item6.addActionListener(this);

label1=newJLabel("");

menu1.add(item1);

menu2.add(item2);

menu2.addSeparator();

menu2.add(item3);

menu3.add(item4);

menu3.addSeparator();//往菜单、对象条中到场一条横线,完成分组功效;

menu3.add(item5);

menu4.add(item6);

menubar.add(menu1);

menubar.add(menu2);

menubar.add(menu3);

menubar.add(menu4);

setJMenuBar(menubar);

button1=newJButton("直线");

button2=newJButton("空心椭圆");

button3=newJButton("实心椭圆");

button4=newJButton("空心矩形");

button5=newJButton("实心矩形");

button6=newJButton("多边形");

pane2.add(button1);

pane2.add(button2);

pane2.add(button4);

pane2.add(button6);

pane2.add(label1);

pane2.add(button3);

pane2.add(button5);

button1.addActionListener(this);

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

button5.addActionListener(this);

button6.addActionListener(this);

c.add(pane1,BorderLayout.NORTH);

c.add(pane2,BorderLayout.SOUTH);

c.add(JD,BorderLayout.CENTER);

pane2.setLayout(new

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1