如何在java中GUI画图程序中显示鼠标移动轨迹

flowerzhouyan 2008-04-13 07:35:59
主程序中:
addMouseListener(new mouseOperate());
addMouseMotionListener(new mouseOperate());

class mouseOperate extends MouseAdapter implements MouseMotionListener
{
public void mouseDragged(MouseEvent e)
{
// setVisible(true);
repaint();
}
public void mouseMoved(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
sx=e.getX();
sy=e.getY();
}
public void mouseReleased(MouseEvent e)
{
fx=e.getX();
fy=e.getY();
repaint();
}
}
}
但是这个程序在画图时无法显示鼠标移动轨迹,希望大家能帮着解决一下,谢谢!
...全文
624 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小宏 2008-04-21
  • 打赏
  • 举报
回复
楼上:如果将mouseDragged的代码放到mouseMoved又是另一种效果.他报错的......
小宏 2008-04-18
  • 打赏
  • 举报
回复
继续关注.....
SH600016 2008-04-13
  • 打赏
  • 举报
回复 2
简单地给你说说,今天心情好,呵呵,其实很简单:

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

public class Test extends JPanel implements MouseListener, MouseMotionListener {

private Polygon m_polygon;
private int m_beginX, m_beginY;
private boolean m_mousePressing = false;

public Test() {
super();
setPreferredSize(new Dimension(640, 640));
addMouseListener(this);
addMouseMotionListener(this);
}

@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
if (m_mousePressing) {
g2d.drawPolyline(m_polygon.xpoints, m_polygon.ypoints, m_polygon.npoints);
}

}

public void mouseClicked(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {
m_beginX = e.getX();
m_beginY = e.getY();
m_mousePressing = true;
m_polygon = new Polygon();
m_polygon.addPoint(m_beginX, m_beginY);
}

public void mouseReleased(MouseEvent e) {
m_mousePressing = false;
}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mouseDragged(MouseEvent e) {
int currentX = e.getX();
int currentY = e.getY();
m_polygon.addPoint(currentX, currentY);
repaint();
}

public void mouseMoved(MouseEvent e) {

}
}

---------------
如果将mouseDragged的代码放到mouseMoved又是另一种效果,呵呵

Inhibitory 2008-04-13
  • 打赏
  • 举报
回复
如果你是在JPanel的paintComponent中画的话, 呵呵, 比较麻烦(因为是双缓冲的), 不过可以先画在BufferedImage上, 然后再画到屏幕上.
assdust110 2008-04-13
  • 打赏
  • 举报
回复
在drg那里写Point p = new Point(x,y);
然后把记录下来的点在paint方法里做一个循环随便画就是了。

唯一要注意的就是要搞清楚repanit,update,paint三个方法的调用顺序。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧