1. 对项目组成进行分析:
(1)画图板主界面类paint.java :
主界面是一个窗体(JFrame),包含了三块面板:工具面板,颜色面板,画图面板;在这个窗体上创建画图面板的画布对象以及对鼠标的监听;
(2)鼠标监听器类MyMouseListener.java :
这是一个实现接口的类;
画图板运行起来后,首先通过鼠标在工具面板上和颜色面板上对按钮的点击选定画图的形状或功能和画笔的颜色,然后通过鼠标在画图面板上的点击和拖动来完成画图功能,所以,对鼠标动作的监听至关重要,画图的主要功能的实现都要通过对鼠标的监听来完成,即修改或添加功能时主要修改这个类;
(3)测试类text.java :
包含主方法,测试程序代码的运行效果;
(4)工具面板类ToolPanel.java :
面板类;包含工具按钮,主要属性是选定的工具,即shape;
(5)颜色面板类ColorPanel.java :
面板类;包含颜色按钮,主要属性是选定的颜色,即color;
(6)画图面板类PaintPanel.java :
即一块白色的面板(Jpanel);要在上面创建画布对象;
2. 对类与类之间进行分析
3. 写程序:
(1)Paint:它是一个窗体,直接继承窗体类
public class Paint extends JFrame{
//画布
private Graphics g;
//显示画图板的方法
public void showFrame(){
//设置窗体的属性
…………(略)
//创建三块面板对象 JPanel
ToolPanel toolPanel = new ToolPanel();
ColorPanel colorPanel = new ColorPanel();
PaintPanel paintPanel = new PaintPanel();
//将面板添加到窗体指定的位置
this.add(toolPanel,BorderLayout.WEST);
this.add(colorPanel,BorderLayout.SOUTH);
this.add(paintPanel,BorderLayout.CENTER);
//可见
this.setVisible(true);
//获取画图面板的画布对象
g = paintPanel.getGraphics();
//创建鼠标监听器对象 this指代当前对象
MyMouseListener mouseListener = new MyMouseListener(g,toolPanel,colorPanel);
//给画图面板添加鼠标监听、鼠标移动监听
paintPanel.addMouseListener(mouseListener);
paintPanel.addMouseMotionListener(mouseListener);
}
}
(2)ToolPanel :它是一个面板,直接继承面板类
public class ToolPanel extends JPanel{
//形状标记
private String shape;
//获取shape的方法
public String getShape_(){
return shape;
}
//构造方法,直接调用设置面板的方法
public ToolPanel(){
setPanel();
}
//装饰工具面板的方法
public void setPanel(){
…………(略)
}
}
(3)ColorPanel :它是一个面板,直接继承面板类
参考工具面板类;
(4)PaintPanel :它是一个面板,直接继承面板类
参考工具面板类;
(5)MyMouseListener :
public class MyMouseListener implements MouseListener ,MouseMotionListener{
//坐标、画布、形状、工具面板、颜色面板、画图面板
private int x1,y1,x2,y2;
private Graphics g;
private String shape;
private ToolPanel toolPanel;
private ColorPanel colorPanel;
//有参数的构造方法 作用:接收外面传递过来的画布对象、工具面板、颜色面板
public MyMouseListener(Graphics gr, ToolPanel tool_panel,
ColorPanel color_panel, PaintPanel paint_panel) {
g = (Graphics2D) gr;
toolPanel = tool_panel;
colorPanel = color_panel;
paintPanel = paint_panel;
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
}
注意:三块面板类一定要有构造方法,直接调用设置面板的方法
3. 总结 :
通过分析后,把代码分成几块,使程序更直观,方便修改。