在 NetBeans 的 JPanel 中用鼠标画线

Draw line with mouse in JPanel on NetBeans

我需要用鼠标在JPanel 中画一条线,点击面板中的两个点。第一次点击是行首,第二次点击是行尾。

This is my programm

我有这样的东西:

    private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {                                     
    // TODO add your handling code here:
    Graphics g = this.jPanel1.getGraphics();

    int x = evt.getX();
    int y = evt.getY();

    g.drawLine(x, y, x, y);
}     

但它只绘制像素。 Line with coordinates 我需要这样的东西,但只需单击鼠标即可绘制它。

来自文档

Draws a line, using the current color, between the points (x1, y1) and (x2, y2) in this graphics context's coordinate system.

在你的例子中,x1=x2 和 y1=y2,这就是你的线长 1 像素的原因。每次点击后,您必须记录点击的坐标,以便您可以将它们用作下一次点击的直线原点。

您正在绘制一条从 (x, y) 到 (x, y) 的直线,这就是为什么您只得到一个像素的原因。您需要捕获第一次点击的坐标,然后在第二次点击时画线。

private int startX = -1;
private int startY = -1;

private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {                                     
    if (startX == -1 && startY == -1) {
        startX = evt.getX();
        startY = evt.getY();
    } else {
        Graphics g = this.jPanel1.getGraphics();
        g.drawLine(startX, startY, 
                   evt.getX(), evt.getY());
        // reset the start point
        startX = -1;
        startY = -1;
    }
}