我需要用鼠标在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像素长。在每次点击之后,你必须记录你点击的坐标,这样你就可以用它们作为下一次点击的起点。