在JPanel
JFrame 上有一个,JPanel
如下所示 -
public class MyPanel extends JPanel implements MouseListener,
MouseMotionListener {
...
@Override
public void mouseClicked(MouseEvent arg) {
...
Point p = arg.getPoint();
// save this point ...
...
repaint();
}
@Override
protected void paintComponent(Graphics g) {
...
// point1 & point2 are the last two clicked point ..
super.paintComponent(g);
int x1 = point1.x;
int y1 = point1.y;
int x2 = point2.x;
int y2 = point2.y;
g.drawLine(x1, y1, x2, y2);
}
}
我的问题是drawline
绘制的线条与原始组件上的实际点击点位置略有偏差。
我附上了一些更清晰的截图 -
上面的线边缘是我点击它们的 2 个点,下面的线是从 接收到的线drawline
,并且你可以看到这 2 条线不重叠。
点击 1 -
点击 2 -
输出线——
任何有用的解决方案?