[英]Drawing with mouse
嗨,我需要幫助,我正在嘗試制作一個程序,用鼠標在窗口中繪制。 到目前為止,我已經知道單擊點時出現的位置,但是我需要添加拖動方法,以便在將鼠標拖動到頁面上時可以繪制內容。 有人可以看看我的代碼並在可能的地方幫助我嗎?
這是我的代碼:
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);
}
}
我的一個想法是,每當單擊鼠標並根據列表的大小進行繪制時,將每個鼠標坐標都添加到一個單獨的列表中,但是由於您使用的是鼠標拖動,因此可以只使用Path2D.lineTo(x, y)
並為x和y坐標使用e.getX()
和e.getY()
。 在此之后,使用Path2D.moveTo(x, y)
確保鼠標移動的每個像素都附加了行路徑(這可以確保每次移動看起來都不像一條直線,而是像一條直線向任意方向移動)重新“繪圖”)。 另外,一些技巧:
空隙mouseDragged
在使用時通常效果更好mouseMotionAdapter
,因為從我的經驗,一般不會只出現在注冊事件mouseAdapter
。
由於這是一個繪圖程序,因此我個人會為您將來要使用的圓的大小設置一個變量,如果您實際上打算將其擴展為更大的尺寸(例如:g.fillOval(x,y,brushSize,刷子大小))。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.