用鼠标绘图

时间:2012-11-27 01:22:28

标签: java swing actionlistener mousemove

嘿伙计我需要帮助我正在尝试制作一个程序,我可以用鼠标在窗口中绘图。到目前为止,我已经把它点到了一个点,但是我需要添加一个拖动方法,这样当我在页面上拖动鼠标时它会绘制东西。有人可以查看我的代码并帮助我尽可能地帮助我吗?

这是我的代码:

import javax.swing.*;
import java.awt.event.*;
public class mouse {
    private static int x,y;
    private static draw object = new draw ();
    public static void main(String[] args){
        JFrame frame = new JFrame ("Mouse");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,400);
        frame.add(object);
        object.addMouseListener(new AL());
    }
    static class AL extends MouseAdapter{
      public void mousePressed(MouseEvent e){
        x = e.getX();
        y = e.getY();
        object.drawing(x, y);
      }
      public void mouseDragged( MouseEvent e) {
        x= e.getX();
        y= e.getY();
        object.drawing(x, y);
      }
    }
}

import javax.swing.*;
import java.awt.*;

public class draw extends JPanel {
    private static int x,y;
    public void drawing (int xx, int yy){
        x=xx;
        y=yy;
        repaint();
    }

    public void paintComponent (Graphics g){
        g.setColor(Color.black);
        g.fillOval(x, y, 10, 10);
    }
}

1 个答案:

答案 0 :(得分:0)

我的一个想法是,只要单击鼠标,就可以将鼠标坐标添加到单独的列表中,并根据列表的大小进行绘制,但是由于您使用的是鼠标拖动,因此可以使用Path2D.lineTo(x, y)并使用e.getX()e.getY()作为x和y坐标。在此之后使用Path2D.moveTo(x, y)以确保鼠标移动的每个像素都附加了线路径(这可以确保每个移动看起来都不像一条直线,而是像一条移动你方向的线条#39} ; re" drawing" in)。还有一些提示:

  1. 虚空mouseDraggedmouseMotionAdapter中使用时通常效果更好,因为根据我的经验,它通常不会仅仅mouseAdapter注册该事件。

  2. 由于这是一个绘图程序,如果您真的计划将其扩展为更大的东西,我个人会为将来使用的圆的大小设置一个变量(例如:g。 fillOval(x,y,brushSize,brushSize))。