java课设用菜单按钮控制绘图Word文件下载.docx
《java课设用菜单按钮控制绘图Word文件下载.docx》由会员分享,可在线阅读,更多相关《java课设用菜单按钮控制绘图Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
DrawCanvasJD=null;
//将图形界面设为名为“控制绘图”且长宽都为600的图形界面。
publicDraw(){
super("
控制绘图"
);
setSize(WIDTH,HEIGHT);
Containerc=getContentPane();
JD=newDrawCanvas();
JPanelpane2=newJPanel();
pent(c,pane2);
}
privatevoidpent(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=newutton("
button2=newutton("
button3=newutton("
button4=newutton("
button5=newutton("
button6=newutton("
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){
JD.setLine
(1);
JD.setfillOval(0);
JD.setRect(0);
JD.setfillRect(0);
JD.setPolygon(0);
JD.repaint();
//当监听器监听到鼠标点击按钮空心椭圆时,绘制空心椭圆图形
//当监听器监听到鼠标点击按钮实心椭圆时,绘制实心椭圆图形
//当监听器监听到鼠标点击按钮空心矩形时,绘制空心矩形图形
//当监听器监听到鼠标点击按钮实心矩形时,绘制实心矩形图形
//当监听器监听到鼠标点击按钮多边形时,绘制多边形图形
//3.主函数的实现:
//在主函数中创建了一个jf窗口用于产生图形界面。
设置其可见和大小不可改变属性
publicstaticvoidmain(String[]args){
JFramejf=newDraw();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);
jf.setVisible(true);
}
//图形绘制的实现
//导入该程序所需要的包
//DrawCanvas实现图形的绘制(直线空心椭圆实心椭圆空心矩形实心矩形多边形)。
publicclassDrawCanvasextendsJPanel{
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;
publicvoidpaintponent(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);
//设置参数的实现
//导入程序所需的包
//Mypanel类中声明了标签并使得通过创建该类的实例将其添加到图形界面中
publicclassMypanelextendsJPanel{
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、当输入“多边形”,并输入两点坐标参数,点击多边形菜单项或多边形按钮
时,绘制图形为多边形。
(四)附录
附录一:
//界面大小
//菜单条
//菜单
//菜单项
//创建标题;
//初始化容器;
//构造一个新JMenu,用提供的字符串作为其文本;
//往菜单、对象条中到场一条横线,完成分组功效;
setJMenuBar(menubar);
pane2.setLayout(newGridLayout(2,4,20,10));