如何在拖放上绘制一条直线,只有一条直线移动?
我的代码:
panelPaint.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
point1 = e.getPoint();
}
});
panelPaint.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
point2 = e.getPoint();
g2.draw(new Line2D.Double(point1, point2));
panelPaint.repaint();
}
});
当前效果:
答案 0 :(得分:2)
看起来你正在绘制BufferedImage或其他东西。您不应该在鼠标事件中使用Graphics对象进行绘画。
相反,您应该在面板上进行自定义绘制并覆盖paintCompnent(...)
方法。您的paintComponent()
方法应如下所示:
@Override
protected void paintComponent(Grapahics g)
{
super.paintComponent(g);
// custom painting here
g.drawLine(...);
}
第一个陈述将清除背景。下一个语句将绘制起点/终点之间的界限。
查看Custom Painting Approaches以获取更多信息和示例。该示例将在您拖动鼠标时动态绘制一个Rectangle,但对于一行,该概念是相同的。