建立了一个Frame其中加入了一个Canvas,并且在Canvas中显示了图像,现在想要根据鼠标动作绘制一些线条,应该如何进行绘制(绘制后的线条显示在图像上)?

解决方案 »

  1.   

    添加鼠标监听,通过paint(Graphics g)实现
      

  2.   

    通过paint(Graphics g)实现?
    我继承了Canvas类,在其中的paint中写入了要绘制的线条,可是根本显示不出来。同样,继承了Frame类,在其中的paint中写入了要绘制的线条也不起作用。
      

  3.   

    简单的代码,你自己看看吧import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;import javax.swing.JFrame;public class Test extends JFrame { public Test() {
    getContentPane().add(new MyCanvas());
    setSize(200, 200);
    } class MyCanvas extends Canvas implements MouseListener, MouseMotionListener {
    int x1, y1, x2, y2; public MyCanvas() {
    setBackground(Color.white);

    addMouseListener(this);
    addMouseMotionListener(this);
    } @Override
    public void paint(Graphics g) {
    g.setColor(Color.red);
    g.drawLine(x1, y1, x2, y2);
    } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) {
    x2 = e.getX();
    y2 = e.getY();
    } public void mouseReleased(MouseEvent e) { } public void mouseDragged(MouseEvent e) {
    x1 = x2;
    y1 = y2;
    x2 = e.getX();
    y2 = e.getY();
    paint(getGraphics());
    } public void mouseMoved(MouseEvent e) { }
    }

    public static void main(String[] args){
    Test frame = new Test();
    frame.setVisible(true);
    }
    }