主程序中:
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();
}
}
}
但是这个程序在画图时无法显示鼠标移动轨迹,希望大家能帮着解决一下,谢谢!
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();
}
}
}
但是这个程序在画图时无法显示鼠标移动轨迹,希望大家能帮着解决一下,谢谢!
然后把记录下来的点在paint方法里做一个循环随便画就是了。唯一要注意的就是要搞清楚repanit,update,paint三个方法的调用顺序。
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又是另一种效果,呵呵