java repaint 异步问题
发布网友
发布时间:2022-06-06 06:39
我来回答
共1个回答
热心网友
时间:2023-10-05 06:31
我不知道你那个cmd是干什么的 还有那个dwg
反正我只知道拖动画直线没你想的那么复杂 无非就是下面这三个函数
public void mousePressed(MouseEvent e){ //获得开始拖动点的坐标位置
startx=e.getX();
starty=e.getY();
}
public void mouseReleased(MouseEvent e){ 得到拖动结束点的位置 告诉我们释放了拖动的时候鼠标的位置
endx=e.getX();
endy=e.getY();
}
public void mouseDragged(MouseEvent e){ //得到拖动过程中的位置 这里加上repaint重绘 就可以得到轨迹 是一个像素一个像素这样子
x=e.getX();
y=e.getY();
repaint();
}
最后把代码贴上来 :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener.
*/
public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{
int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged
Point x;
Point startx,endx;//起始坐标与终点坐标
public MouseDemo3(){
Container contentPane=getContentPane();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
setSize(300,300);
show();
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/
public void mousePressed(MouseEvent e){
startx=e.getPoint();
}
public void mouseReleased(MouseEvent e){
endx=e.getPoint();
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/
public void mouseMoved(MouseEvent e){
/* flag=1;
x=e.getX();
y=e.getY();
repaint();*/
}
public void mouseDragged(MouseEvent e){
flag=2;
x=e.getPoint();
repaint();
}
public void update(Graphics g){
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(),getHeight());
paint(g);
}
public void paint(Graphics g){
g.setColor(Color.black);
/* if (flag==1){
g.drawString("鼠标坐标:("+x+","+y+")",10,50);
g.drawLine(startx,starty,endx,endy);
}*/
if (flag==2){
g.drawString("拖曳鼠标价坐标:("+x.getX()+","+x.getY()+")",10,50);
g.drawLine((int)startx.getX(),(int)startx.getY(),(int)x.getX(),(int)x.getY());
}
}
public static void main(String[] args){
new MouseDemo3();
}
}