嘿伙计我需要帮助我正在尝试制作一个程序,我可以用鼠标在窗口中绘图。到目前为止,我已经把它点到了一个点,但是我需要添加一个拖动方法,这样当我在页面上拖动鼠标时它会绘制东西。有人可以查看我的代码并帮助我尽可能地帮助我吗?
这是我的代码:
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);
}
}
答案 0 :(得分:0)
我的一个想法是,只要单击鼠标,就可以将鼠标坐标添加到单独的列表中,并根据列表的大小进行绘制,但是由于您使用的是鼠标拖动,因此可以使用Path2D.lineTo(x, y)
并使用e.getX()
和e.getY()
作为x和y坐标。在此之后使用Path2D.moveTo(x, y)
以确保鼠标移动的每个像素都附加了线路径(这可以确保每个移动看起来都不像一条直线,而是像一条移动你方向的线条#39} ; re" drawing" in)。还有一些提示:
虚空mouseDragged
在mouseMotionAdapter
中使用时通常效果更好,因为根据我的经验,它通常不会仅仅mouseAdapter
注册该事件。
由于这是一个绘图程序,如果您真的计划将其扩展为更大的东西,我个人会为将来使用的圆的大小设置一个变量(例如:g。 fillOval(x,y,brushSize,brushSize))。