package MiniDrawPad;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class MiniDrawPad extends JFrame //主类,扩展了JFrame类,用来生成主界面
{
private ObjectInputStream input;
private ObjectOutputStream output; //定义输入输出流,用来调用和保存图像文件
private JButton choices[]; //按钮数组,存放以下名称的功能按钮
private String names[]={"","","","Pencil","Line", "Rect", "fRect","Oval", "fOval","Circle","fCircle", "RoundRect",
"frRect","Rubber","Color", "Stroke","Word" /*画图板上面有的基本的几个绘图单元按钮*/
};
private String styleNames[]={
" 宋体 " , " 隶书 " , " 华文彩云 " , " 仿宋_GB2312 " , " 华文行楷 " ,
" 方正舒体 " , " Times New Roman " , " Serif " , " Monospaced " ,
" SonsSerif " , " Garamond "
}; //可供选择的字体项
//当然这里的灵活的结构可以让读者自己随意添加系统支持的字体
private Icon items[];
private String tipText[]={
//这里是鼠标移动到相应按钮上面上停留时给出的提示说明条
//读者可以参照上面的按钮定义对照着理解
"Draw a new picture",
"Open a saved picture",
"Save current drawing",
"用铅笔随心画",
"画一条直线",
"画空心的矩形",
"画一个用当前颜色填充的矩形",
"画一个空心椭圆",
"画一个用当前颜色填充的椭圆",
"画一个圆",
"画一个带填充色的圆",
"画一个圆角矩形",
"画一个带填充色的圆角矩形",
"橡皮擦工具",
"选择当前绘画的颜色",
"设置线条的粗细",
"在鼠标点击位置输入文字"
};
Icon wei=new ImageIcon("wang.gif") ;//介绍我的
Icon icon=new ImageIcon("mm.gif") ;//说明的ICON
Icon icon1=new ImageIcon("nn.gif") ;//输入文字的ICON
JToolBar buttonPanel ; //定义按钮面板
private JLabel statusBar; //显示鼠标状态的提示条
private DrawPanel drawingArea; //画图区域
private int width=840,height=550; //定义画图区域初始大小
drawings[] itemList=new drawings[5000]; //用来存放基本图形的数组
private int currentChoice=3; //设置默认画图状态为随笔画
int index=0; //当前已经绘制的图形数目
private Color color=Color.black; //当前画笔颜色
int R,G,B; //用来存放当前色彩值
int f1,f2; //用来存放当前字体风格
String style1; //用来存放当前字体
private float stroke=1.0f; //设置画笔粗细,默认值为1.0f
JCheckBox bold,italic; //定义字体风格选择框
//bold为粗体,italic为斜体,二者可以同时使用
JComboBox styles;
public MiniDrawPad() //构造函数
{
super("画板测试版 1.00");
JMenuBar bar=new JMenuBar(); //定义菜单条
JMenu fileMenu=new JMenu("文件");
fileMenu.setMnemonic('F');
//新建文件菜单条
JMenuItem newItem=new JMenuItem("新建");
newItem.setMnemonic('N');
newItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
newFile(); //如果被触发,则调用新建文件函数段
}
}
);
fileMenu.add(newItem);
//保存文件菜单项
JMenuItem saveItem=new JMenuItem("保存");
saveItem.setMnemonic('S');
saveItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
saveFile(); //如果被触发,则调用保存文件函数段
}
}
);
fileMenu.add(saveItem);
//打开文件菜单项
JMenuItem loadItem=new JMenuItem("打开");
loadItem.setMnemonic('L');
loadItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
loadFile(); //如果被触发,则调用打开文件函数段
}
}
);
fileMenu.add(loadItem);
fileMenu.addSeparator();
//退出菜单项
JMenuItem exitItem=new JMenuItem("退出");
exitItem.setMnemonic('X');
exitItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0); //如果被触发,则退出画图板程序
}
}
);
fileMenu.add(exitItem);
bar.add(fileMenu);
/*设置颜色菜单条
JMenu colorMenu=new JMenu("颜色");
colorMenu.setMnemonic('C');
//选择颜色菜单项
JMenuItem colorItem=new JMenuItem("选择颜色");
colorItem.setMnemonic('O');
colorItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
chooseColor(); //如果被触发,则调用选择颜色函数段
}
}
);
colorMenu.add(colorItem);
bar.add(colorMenu);
//设置线条粗细菜单条
JMenu strokeMenu=new JMenu("粗细");
strokeMenu.setMnemonic('S');
//设置线条粗细菜单项
JMenuItem strokeItem=new JMenuItem("增加粗度");
strokeItem.setMnemonic('K');
strokeItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
setStroke();
}
}
);
strokeMenu.add(strokeItem);
bar.add(strokeMenu);*/
//设置提示菜单条
JMenu helpMenu=new JMenu("帮助");
helpMenu.setMnemonic('H');
//设置提示菜单项
JMenuItem aboutItem=new JMenuItem("关于mini画板!");
aboutItem.setMnemonic('A');
aboutItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,
"您现在使用的是王伟开发的画板 1.00测试版\n华东交通大学05软件工程多媒体3班\nQQ:554684729",
" 画板开发介绍",
JOptionPane.INFORMATION_MESSAGE ,wei);
}
}
);
helpMenu.add(aboutItem);
//设置帮助主题
JMenuItem howItem=new JMenuItem("帮助主题");
howItem.setMnemonic('W');
howItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,
"可以使用它打开已保存的图像文件\n也可以将画的图像保存起来\n该画板的使用比较简单,用它可以画出各种\n基本的图形,不足之处望指出,以待改进!",
" 画板使用介绍",
JOptionPane.INFORMATION_MESSAGE ,icon);
}
}
);
helpMenu.add(howItem);
bar.add(helpMenu);
items=new ImageIcon[names.length];
//创建各种基本图形的按钮
drawingArea=new DrawPanel();
choices=new JButton[names.length];
buttonPanel = new JToolBar( JToolBar.VERTICAL ) ;
buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ;
ButtonHandler handler=new ButtonHandler();
ButtonHandler1 handler1=new ButtonHandler1();
//导入我们需要的图形图标,这些图标都存放在与源文件相同的目录下面
for(int i=3;i<choices.length;i++)
{//items[i]=new ImageIcon( MiniDrawPad.class.getResource(names[i] +".gif"));
//如果在jbuilder下运行本程序,则应该用这条语句导入图片
items[i]=new ImageIcon(names[i] + ".gif");
//默认的在jdk或者jcreator下运行,用此语句导入图片
choices[i]=new JButton("",items[i]);
评论4