JAVA课程设计凸多边形绘图器Word格式.docx

上传人:b****2 文档编号:15352018 上传时间:2022-10-29 格式:DOCX 页数:9 大小:18.83KB
下载 相关 举报
JAVA课程设计凸多边形绘图器Word格式.docx_第1页
第1页 / 共9页
JAVA课程设计凸多边形绘图器Word格式.docx_第2页
第2页 / 共9页
JAVA课程设计凸多边形绘图器Word格式.docx_第3页
第3页 / 共9页
JAVA课程设计凸多边形绘图器Word格式.docx_第4页
第4页 / 共9页
JAVA课程设计凸多边形绘图器Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

JAVA课程设计凸多边形绘图器Word格式.docx

《JAVA课程设计凸多边形绘图器Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计凸多边形绘图器Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

JAVA课程设计凸多边形绘图器Word格式.docx

1、功能

编写一个展示凸多边形性质的程序,提供输入点的端口,提供显示点排列后顺序的文本框、提供显示凸多边形面积与周长的文本行,提供显示凸多边形形状的画板.

2、如何实现

编写一个PolygonJFrame类用来显示框架和响应各类单击事件.

编写一个PolygonCanvas类用来根据条件绘图.

四、源程序清单

PolygonJFrame类

importjava.awt.Dimension。

importjava.awt.GridLayout。

importjava.awt.event.ActionEvent。

importjava.awt.event.ActionListener。

importjavax.swing.JButton。

importjavax.swing.JCheckBox。

importjavax.swing.JFrame。

importjavax.swing.JOptionPane。

importjavax.swing.JPanel。

importjavax.swing.JScrollPane。

importjavax.swing.JTextArea。

importjavax.swing.JTextField。

publicclassPolygonJFrameextendsJFrameimplementsActionListener{

privatePolygonCanvaspcs。

//多边形画板

privateJButtondrawbutton,naturebutton。

//画图、清理按钮

privateJTextFieldaddpoint,showpolygon。

//输入点、和现实多边形性质的文本行

privateJTextAreashowpoints。

//显示每个点的信息

privateJCheckBoxArea,perimeter。

//选择显示的信息

privatepointp[]=newpoint[100]。

privateintnum=0。

privateJPanelpanel=newJPanel(newGridLayout(1,3))。

publicdoubleAreamessage,perimetermessage。

publicbooleannf=true。

//默认可以构成凸多边形

publicPolygonJFrame()

{

super("

凸多边形"

)。

Dimensiondim=getToolkit().getScreenSize()。

//获得屏幕分辨率(屏幕分辨率是个对象)

this.setBounds(dim.width/3,dim.height/3,dim.width/3,dim.height/3)。

//窗口居中

this.setDefaultCloseOperation(EXIT_ON_CLOSE)。

//窗口关闭,程序结束

JPanelpanelEdti=newJPanel(newGridLayout(5,1))。

panel.add(panelEdti,0)。

addpoint=newJTextField("

点的输入格式为(XXXX,XXXX)"

addpoint.addActionListener(this)。

//文本框响应单击事件

panelEdti.add(addpoint)。

Area=newJCheckBox("

面积"

perimeter=newJCheckBox("

周长"

JPanelselected=newJPanel()。

//将两个复选按钮加入同一面板

selected.add(Area)。

selected.add(perimeter)。

panelEdti.add(selected)。

showpolygon=newJTextField("

属性"

showpolygon.setEditable(false)。

//属性行不能编辑

panelEdti.add(showpolygon)。

drawbutton=newJButton("

绘图"

drawbutton.addActionListener(this)。

panelEdti.add(drawbutton)。

naturebutton=newJButton("

naturebutton.addActionListener(this)。

panelEdti.add(naturebutton)。

showpoints=newJTextArea()。

JScrollPanejsp=newJScrollPane(showpoints)。

panel.add(jsp,1)。

this.getContentPane().add(panel)。

point[]temp=newpoint[1]。

temp[0]=newpoint(0,0)。

pcs=newPolygonCanvas(temp,nf)。

//面板初始化为x轴y轴和原点(0,0)

panel.add(pcs)。

this.setVisible(true)。

}

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

if(e.getSource()==addpoint)//响应点编辑文本框

try

{

if(addpoint.getText().length()!

=11)//处理文本框上的数据

thrownewException("

第"

+(num+1)+"

点的输入格式错误,请按格式输入!

"

intx=Integer.parseInt(addpoint.getText().substring(1,5))。

inty=Integer.parseInt(addpoint.getText().substring(6,10))。

p[num++]=newpoint(x,y)。

//将处理后的点放入数组p中

showpoints.append("

+num+"

个点"

+p[num-1]+"

\n"

}

catch(Exceptionf)//若输入格式不正确则抛出异常,相当于没输入

JOptionPane.showMessageDialog(drawbutton,f.toString())。

if(e.getSource()==drawbutton)//若按绘图按钮

if(nf)

point[]realp=newpoint[num]。

for(inti=0。

i<

num。

i++)

realp[i]=p[i]。

Polygonpolygon。

polygon=newPolygon(realp)。

Areamessage=polygon.area()。

perimetermessage=polygon.perimeter()。

pcs.set(polygon.p,nf)。

pcs.repaint()。

排序后的点如下:

+"

for(inti=0。

polygon.p.length&

&

polygon.p[i]!

=null。

showpoints.append("

+(i+1)+"

+polygon.p[i]+"

nf=false。

}//若不能构成凸多边形则Polygon构造函数抛出异常

catch(PolygonExceptionf)//捕捉异常只画点

nf=false。

pcs.set(realp,nf)。

pcs.repaint()。

JOptionPane.showMessageDialog(drawbutton,f.toString()+"

图中蓝点即为所给点"

else//若已经画过图就抛出对话框

{

inti=JOptionPane.showConfirmDialog(showpolygon,"

是否重新绘图!

if(i==0)//选择确定就重画

nf=true。

point[]temp=newpoint[1]。

temp[0]=newpoint(0,0)。

pcs.set(temp,false)。

num=0。

JOptionPane.showMessageDialog(showpoints,"

请重新输入点"

}//否则直接退出程序

else

System.exit(0)。

}

if(e.getSource()==naturebutton)//选择属性按钮

if(Areamessage!

=0.0)

showpolygon.setText("

if(Area.isSelected())

showpolygon.setText("

面积:

+Areamessage)。

if(perimeter.isSelected())

showpolygon.setText(showpolygon.getText()+"

+perimetermessage)。

else

JOptionPane.showMessageDialog(showpolygon,"

必须先绘图!

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

newPolygonJFrame()。

PolygonCanvas类

importjava.awt.Canvas。

importjava.awt.

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

当前位置:首页 > 工作范文 > 制度规范

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

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