java课设用菜单按钮控制绘图.docx
- 文档编号:24349988
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:31
- 大小:127.15KB
java课设用菜单按钮控制绘图.docx
《java课设用菜单按钮控制绘图.docx》由会员分享,可在线阅读,更多相关《java课设用菜单按钮控制绘图.docx(31页珍藏版)》请在冰豆网上搜索。
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.addActi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课设用 菜单 按钮 控制 绘图