を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 -
出力ライン -
役立つ解決策はありますか?