用鼠标在NetBeans的JPanel中划线



我需要用鼠标在JPanel中画一条线,单击面板中的两个点。第一次点击是行开始,第二次点击是行结束。

这是我的程序

我有这样的东西:

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

但是它只绘制像素。坐标线我需要这样的东西,但只是用鼠标点击绘制。

你正在从(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;
    }
}     

From the doc

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

在你的例子x1=x2和y1=y2,这就是为什么你的线是1像素长。在每次点击之后,你必须记录你点击的坐标,这样你就可以用它们作为下一次点击的起点。

相关内容

  • 没有找到相关文章

最新更新