我希望在程序中创建一个画图函数,当发生某事件时才调用这个画图函数!我在所看到的数都只是介绍applet的画图方法,我这里是用jframe的,请帮忙一下!由于我是刚学java,对java的程序不是了解很深如,因此希望程序能详细一点。

解决方案 »

  1.   

    applet 画图跟 普通程序画图不是一样的么?!
      

  2.   

    //MouseDraw.java
    package chapter7.MouseDraw;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;public class MouseDraw
    {
        public static void main(String[] args)
        {  
            MouseFrame frame=new MouseFrame();
    frame.addWindowListener(new Wadapt());
    frame.setVisible(true);
        }
    }class MouseFrame extends Frame
    {
        public MouseFrame()
        {
            setTitle("ÀûÓÃÊó±ê»æͼ");
    setSize(300,300);
    //½«panel¼ÓÈëµ½frame
    MousePanel panel=new MousePanel();
    add(panel);
        }
    }class MousePanel extends Panel implements MouseListener,MouseMotionListener
    {
    LinkedList dataSaver=new LinkedList();

        private int x,y,start_X,start_Y,old_X,old_Y;
        private boolean draw;
        public MousePanel()
        {
            addMouseListener(this);
            addMouseMotionListener(this);
        }    public void mousePressed(MouseEvent evt)
        {
            start_X=evt.getX();
            start_Y=evt.getY();
            draw=false;
        }
        public void mouseReleased(MouseEvent evt)
        {
         x=evt.getX();
            y=evt.getY();
         repaint(); 
         dataSaver.addLast(new int[]{start_X,start_Y,x,y});
        
        }
        
        public void mouseClicked(MouseEvent evt){}    public void mouseEntered(MouseEvent evt)
        {
            setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        }    public void mouseExited(MouseEvent evt)
        {
            setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        }    public void mouseDragged(MouseEvent evt)
        {
            x=evt.getX();
            y=evt.getY();
            repaint();   
        }    public void mouseMoved(MouseEvent evt){}
     
        public void update(Graphics g)
        {
            paint(g);
        }

        public void paint(Graphics g)
        {
            if(!draw)
            {
                old_X=x;
                old_Y=y;
                draw=true;
            }
            else
            {
                g.setColor(getBackground());
                g.drawLine(start_X,start_Y,old_X,old_Y);
                old_X=x;
                old_Y=y;
            }
            g.setColor(getForeground());
            g.drawLine(start_X,start_Y,x,y);
            Iterator data=dataSaver.iterator();
            
            while(data.hasNext())
            {
             int[] temp=(int[])(data.next());
             g.drawLine(temp[0],temp[1],temp[2],temp[3]);
            }
        }
    }class Wadapt extends WindowAdapter
    {
        public void windowClosing(WindowEvent evt)
        {
            Frame frm=(Frame)evt.getSource();
            frm.setVisible(false);
            frm.dispose();
            System.exit(0);
        }
    }
      

  3.   

    要想在一个组建上画图,只要重写这个组建的paintComponent(Graphics g)方法和paint(Graphics g),
    前者是组建初始化时系统自动调用的,后者是在过程中刷新使用的。
    Graphics 里提供了许多画图的方法,上面只用了画直线。其他自己看文档吧
      

  4.   

    用Graphics 可以画各种图形