JAVA画板

  • 格式:docx
  • 大小:488.02 KB
  • 文档页数:33

安徽师范大学

JAVA高级程序设计实验报告

[键入作者姓名]

2013/11/19

学院名称 计算机科学学院

专业名称 软件工程

课程名称 JAVA高级程序设计

实验名称 综合练习1

选 题 2、JAVA画板

姓 名

学 号

完成日期 2013年11月19日

1

一、实验目的

1、熟练掌握Java工程的文件组织方法

2、熟悉Java用户界面程序开发

3、熟练掌握类和接口的继承

4、熟练掌握多类之间的分工组织

二、实验内容

结构设计

程序以Frame为主窗口,主要分为两个区,工具栏区和画板区。工具栏区为选择各种图形,及橡皮擦,调节画笔粗细等。画板区主要是监听鼠标在其上产生的消息,以及当前选择的图形来实现图形的绘制,在每次捕获到鼠标消息时,便重新绘制界面。

功能概要

主要功能实现菜单,各种图形的选择,画笔的调节,以及保存打开图片等。

具体的实现过程如下:

在程序中设置图形标志,建立图形超类Shape类,各种特殊图形均继承自Shape类,在实例化图形时,便使用超类作为返回类型,并定义一个超类的变量来接受每次实例化的对象。超类中用抽象关键词建立一个绘画函数,各种图形在继承后都需要针对各种图形的特点实现绘画函数,以便画出特殊图形。在绘画前会设置颜色及画笔的粗细等参数。

结论

通过几天的思考及上机实践,很大程度上完成了预期的目标,其中不乏有各种各样的问题与难题出现,但是好在网络时代的方便以及书本内容的丰富,难题都一一迎刃而解,期间的收获不言而喻。

总体来说完成预期目标。

三、实验过程

实验截图

2

1、Java工程的结构:

2、打开后的初始界面:

3

3、各种图形及橡皮擦(可调节画笔的粗细及颜色):

4、可保存和打开图片:

4

5、撤销及重画功能:

6、保存效果及关于:

5

7、颜色选择功能:

8、全屏显示功能:

6

画板源码

me.peng.window

Whitebord

package me.peng.window;

import java.awt.Color;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Insets;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.MenuShortcut;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

import java.awt.event.WindowStateListener;

import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

import javax.swing.JColorChooser;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import me.peng.util.Config;

import me.peng.wight.BrowMenu;

import me.peng.wight.PaintPanel;

public class Whitebord extends Frame implements WindowListener{

/*

* 主程序是一个Frame窗口,主要分为两个区。

* 一区为工具条区,包含一些工具,如图形选择,橡皮擦,线条的粗细等。

* 二区为画图面板区,可以使用鼠标绘画一些图形。

*/

private static final long serialVersionUID = 1L;

private BrowMenu panel; 7

private PaintPanel paintPanel;

private MenuBar menuBar;

private final static String[] menu1 = {"新建","打开","保存"};

private final static String[] menu2 = {"撤销","重做"};

private final static String[] menu3 = {"全屏","属性","关于"};

public static void main(String[] args) {

for(String string : args){

System.out.println(string);

}

new Whitebord();

}

/*

* 实例化画板

*/

public Whitebord() {

super("画板 - 2011级 软件工程 110705xx xx 开发");

this.setBounds(100, 100, 940, 600);

this.setLayout(null);

Config.HOME_INSETS = new Insets(30, 8, 8, 8); //获取窗口的显示区域

initUi();

this.setVisible(true);

}

/*

* 初始化工具栏和画板

* 如添加图形按钮等

*/

private void initUi() {

this.setBackground(new Color(0xD6DFEF)); //设置背景色

//下面是添加一些菜单,并设置监听器

menuBar = new MenuBar();

Menu m1 = new Menu("文件(K)");

m1.setShortcut(new MenuShortcut(KeyEvent.VK_F));

for (String i : menu1) {

MenuItem menuItem = new MenuItem(i);

menuItem.addActionListener(menuListener);

m1.add(menuItem);

}

m1.addSeparator();

{

MenuItem menuItem = new MenuItem("退出");

menuItem.addActionListener(menuListener);

m1.add(menuItem); 8

}

menuBar.add(m1);

Menu m2 = new Menu("编辑(E)");

m2.setShortcut(new MenuShortcut(KeyEvent.VK_E));

for (String i : menu2) {

MenuItem menuItem = new MenuItem(i);

menuItem.addActionListener(menuListener);

m2.add(menuItem);

}

menuBar.add(m2);

Menu m3 = new Menu("查看(L)");

m3.setShortcut(new MenuShortcut(KeyEvent.VK_L));

for (String i : menu3) {

MenuItem menuItem = new MenuItem(i);

menuItem.addActionListener(menuListener);

m3.add(menuItem);

}

menuBar.add(m3);

this.setMenuBar(menuBar);

//将工具条添加到窗口中

this.add(panel = new BrowMenu());

panel.setWidth(this.getSize().width);

//颜色选择控件

JColorChooser jColorChooser = new JColorChooser(Color.red);

jColorChooser.setBounds(Config.HOME_INSETS.top

+Config.PAINTPANEL_X+Config.PAINTPANEL_WIDTH,

Config.HOME_INSETS.top+Config.PAINTPANEL_Y, 300, 400);

jColorChooser.setOpaque(true);

this.add(jColorChooser);

this.add(paintPanel = new PaintPanel(panel,jColorChooser));

System.out.println(Config.HOME_INSETS.toString());

this.addWindowStateListener(windowStateListener);

this.addWindowListener(this);

}

/*

* 菜单按下监听器

*/

private ActionListener menuListener = new ActionListener() {

@Override