我需要用鼠标在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);
}
但它只绘制像素。 Line with coordinates 我需要这样的东西,但只需点击鼠标即可绘制它。
答案 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;
}
}