在 NetBeans 的 JPanel 中用鼠标画线
Draw line with mouse in JPanel on NetBeans
我需要用鼠标在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
我需要这样的东西,但只需单击鼠标即可绘制它。
来自文档
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;
}
}
我需要用鼠标在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 我需要这样的东西,但只需单击鼠标即可绘制它。
来自文档
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;
}
}