面向对象程序设计课程设计——绘图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计课程设计报告

题目:

专业:

班级:

学号:

姓名:

指导老师:

时间:

一、课程设计题目及所涉及知识点

设计题目是“用菜单和按钮来控制绘图”,实现简单绘图功能,具体要求:画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小可在程序中设定)。界面要求:用图形界面实现。所涉及的知识点主要是:

1、java的抽象与封装:private、public、protected之类的访问属性控制符;

2、图形用户界面:java中的awt包(Panel、Frame类),swing包(JFrame、Jpanel类)以及各种组件的使用即按钮JButton、布局管理器(BorderLayout、GridLayout等)、标签JLabel、JTextField等;

3、java机制:鼠标事件的处理,窗口事件的处理;

4、类的继承与接口的实现:类的继承(extends关键字),接口的实现(implements关键字)。

二、课程设计思路

设计思路:

1、设计绘制图形的图形界面是基于AWT 、SWING组;在窗体中加入菜单栏、面板,在面板中加入按钮等组件,这样就构成了图形界面。

2、建立菜单项和按钮的监听事件,使之在点击之后触发绘图函数。

3、利用绘图函数画直线,画空心或实心椭圆、画空心或实心矩形、画多边形图形。

三、课程设计中遇到的难点及解决办法

1、绘图区域用画布不能实现绘图。通过使用面板来解决此类问题,把画布改为面板,用绘图函数把图形绘制好之后加入面板,把面板添加到窗体中。

2、事件处理不正常,如点击按钮之后不能正常绘制函数。通过改变事件的监听状态,把事件监听加入到面板类中使之正常。

四、总结

通过这次的课程程序设计,我学会了如何把自己学习到的基础知识转化为应用程序。不仅仅温习了基础知识、扩大了专业知识面,而且通过书籍、网络对收集资料、查阅文献、方案制定等实践方面得到了很好的锻练,促进对所学知识应用能力的提高。通过自己的动手实践,我也发现了自己有很多不足的地方,更加认识到要努力自己解决问题,无论是通过书籍还是网络资料,自己动手实践,这样更能加深印象,加强记忆,促使自己不得不去提高自己的编程水平,本次实验让我认识到实验的重要性,实践比理论更能提高自身的知识。通过这

次课程设计,我进一步加深对基础理论的理解,同时我渐渐的复习了Java使用方法和编程语法,之后的编程过程也相对得心应手,基本完成了预期计划的要求。

五、附录—主要源程序代码及运行结果

1、主要程序代码

//主函数

public class java {

public static void main(String args[]){

mypanel a=new mypanel();

}

}

//构建图形界面

public class mypanel extends JFrame implements ActionListener{ JMenuBar menubar=new JMenuBar();

JMenu menu1=new JMenu("直线");

JMenu menu2=new JMenu("椭圆");

JMenu menu3=new JMenu("矩形");

JMenu menu4=new JMenu("多边形");

JMenuItem item1=new JMenuItem("直线");

JMenuItem item2=new JMenuItem("空心椭圆");

JMenuItem item3=new JMenuItem("实心椭圆");

JMenuItem item4=new JMenuItem("空心矩形");

JMenuItem item5=new JMenuItem("实心矩形");

JMenuItem item6=new JMenuItem("多边形");

JButton button1=new JButton("直线");

JButton button2=new JButton("空心椭圆");

JButton button3=new JButton("实心椭圆");

JButton button4=new JButton("空心矩形");

JButton button5=new JButton("实心矩形");

JButton button6=new JButton("多边形");

JLabel label1=new JLabel("");

JPanel panel2=new JPanel();

public mypanel(){

Container container = getContentPane();

container.add(panel2,BorderLayout.SOUTH);

panel2.setLayout(new GridLayout(2,5,20,10));

final JPanel p = new JPanel();

getContentPane().add(p);

menu1.add(item1);

menu2.add(item2);

menu2.add(item3);

menu3.add(item4);

menu3.add(item5);

menu4.add(item6);

menubar.add(menu1);

menubar.add(menu2);

menubar.add(menu3);

menubar.add(menu4);

panel2.add(button1);

panel2.add(button2);

panel2.add(button4);

panel2.add(button6);

panel2.add(label1);

panel2.add(button3);

panel2.add(button5);

setJMenuBar(menubar);

setTitle("绘制图形");

setSize(600,400);

setVisible(true);

}

//菜单及按钮的监听事件,按菜单键或者按钮键画直线,画空心或实心椭圆、画空心或实心矩形、画多边形

item1.addActionListener(new ActionListener(){

public void actionPerformed(final ActionEvent e){

Graphics g = p.getGraphics();

g.drawLine(400, 100, 50, 100);

}

});

item2.addActionListener(new ActionListener(){

public void actionPerformed(final ActionEvent e){

Graphics g = p.getGraphics();

g.drawOval(100,100,200,50);

}

});

item3.addActionListener(new ActionListener(){

public void actionPerformed(final ActionEvent e){

Graphics g = p.getGraphics();

相关文档
最新文档