在Graphics2D类中绘制一条直线拖放

时间:2016-11-01 20:28:02

标签: java swing

如何在拖放上绘制一条直线,只有一条直线移动?

我的代码:

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();
                }
            });

当前效果:

https://i.stack.imgur.com/tWFCE.png

1 个答案:

答案 0 :(得分:2)

看起来你正在绘制BufferedImage或其他东西。您不应该在鼠标事件中使用Graphics对象进行绘画。

相反,您应该在面板上进行自定义绘制并覆盖paintCompnent(...)方法。您的paintComponent()方法应如下所示:

@Override
protected void paintComponent(Grapahics g)
{
    super.paintComponent(g);

    // custom painting here
    g.drawLine(...);

}

第一个陈述将清除背景。下一个语句将绘制起点/终点之间的界限。

查看Custom Painting Approaches以获取更多信息和示例。该示例将在您拖动鼠标时动态绘制一个Rectangle,但对于一行,该概念是相同的。