今天对画图板功能进行了增加,具体步骤,及注意事项如下:
1.首先要了解各功能模块是怎样形成的。
画图板大概分为3个模块:功能模块(ToolPanel),颜色模块(ColorPanel),画图面板(DrawPanel)。
将这3个模块在容器中布局用到了边框布局BorderLayout。
this.add(tool_panel,BorderLayout.WEST);
this.add(color_panel,BorderLayout.SOUTH);
this.add(draw_panel,BorderLayout.CENTER);
2.功能模块类(ToolPanel)的创建。
要继承JPanel类
画图板有16个工具,我们只需要创建16个按钮,在对其在面板进行布局就行。
由于按钮比较多,在创建按钮,对按钮进行监听以及在按钮上添加图片等操作时代码比较多且重复。为了优化代码创建了一个String型数组
String[] shapes = {"star","dot_rect","eraser","fill","color_picker",
"magnifier","pencil","brush","airbrush","word","line","curve",
"rect","polygon","oval","round_rect"};
这样我们就只需要通过循环对其进行创建与调用就行。
在添加图片时要注意图片文件的位置,最好把文件和代码放在同一个文件里,便于使用与移植。
ImageIcon image=new ImageIcon("images//"+shapes[i]+".jpg");
button.setIcon(image); //在按钮上添加图片
button.setPreferredSize(new Dimension(image.getIconWidth(),image.getIconHeight())); //设置按钮大小
3.颜色模块(ColorPanel)的创建
继承JPanel类,
创建过程与工具模块相似,创建Color型的数组。把按钮背景颜色设为当前颜色。
button.setBackground(color[i]); //设置按钮颜色
button.setPreferredSize(new Dimension(25,25)); //设置按钮大小
需要注意的是在对颜色进行监听时要把对象强制转换成按钮型才能获取按钮的背景颜色
ActionListener color_listener=new ActionListener(){
public void actionPerformed(ActionEvent e){
colors=((JButton)e.getSource()).getBackground();
}
4.画图面板类(DrawPanel)的创建
5.在画图板类(Draw)的创建
在画板类中创建3个面板类,并添加到窗体中去。
需要注意的是在对3个面板类进行监听是要给形参返回3个面板对象
MyMouseListener mouse_listener=new MyMouseListener(tool_panel,color_panel,draw_panel);
//给窗体添加鼠标监听器
draw_panel.addMouseListener(mouse_listener);
draw_panel.addMouseMotionListener(mouse_listener); //鼠标移动事件监听
6.事件监听类
整个画图板中事件监听类是比较难的
在事件监听类中我们要接收鼠标监听器传过来的面板对象,并通过获取面板对象传过来的参数进行比较,进行画图和获取颜色。
然后是各工具的实现,将在下篇博客中介绍