[英]Java Swing draw lines with mouse click and drag
我想带回之前问过的一个问题: java draw line as the mouse is moved
“我想在我的应用程序中添加一个功能,允许用户通过在开始位置单击鼠标并在结束位置释放它来绘制一条直线。直线应该随着鼠标移动而移动,直到它最终被释放;类似于使用 Microsoft Paint 应用程序绘制线条的方式。
如何实现这一点,以便在不重新绘制可能已经在该矩形区域中绘制的其他内容的情况下,在移动时重新绘制线条?”
问题是:如何在旧线仍然存在的情况下绘制多条线?
这是对我有用的代码,但是只要你画一个新的代码,上一行就会被删除:
public static void main(String args[]) throws Exception {
JFrame f = new JFrame("Draw a Red Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
JPanel p = new JPanel() {
Point pointStart = null;
Point pointEnd = null;
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g) {
super.paint(g);
if (pointStart != null) {
g.setColor(Color.RED);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
}
}
};
f.add(p);
f.setVisible(true);
}
只需在 mouseRelesed 中设置
pointStart = e.getPoint instead of pointStart = null.
当您将它设置为 null 时,不需要任何列表或类似的东西,它会从头开始并删除最后一个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.