在NetBeans上的JPanel中使用鼠标绘制线条

时间:2015-10-07 11:46:44

标签: java netbeans jpanel

我需要用鼠标在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 我需要这样的东西,但只需点击鼠标即可绘制它。

2 个答案:

答案 0 :(得分:1)

来自文档

  

使用当前颜色在此图形上下文的坐标系中的点(x1,y1)和(x2,y2)之间绘制一条线。

在你的情况下,x1 = x2和y1 = y2,这就是为什么你的行长1个像素。每次点击后,您必须记录点击的坐标,以便您可以将它们用作下一次点击的行的原点。

答案 1 :(得分: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;
    }
}