我必须在Java中绘制一条线。我点击一个点,然后释放鼠标键,移动鼠标(线的末尾应该是鼠标光标所在的位置(动态预览)),然后再次单击鼠标键以生成线。两点之间的动态线条,点击,移动鼠标,然后点击
我在这里看到各种问题,但大多数处理拿着鼠标按钮和拖动鼠标。
我的问题是,如何使用上述方法动态地绘制一条线。我很担心重新粉刷。我有更早的代码,并且在移动鼠标时画出了所有的行。有没有办法只是预览。
我必须在Java中绘制一条线。我点击一个点,然后释放鼠标键,移动鼠标(线的末尾应该是鼠标光标所在的位置(动态预览)),然后再次单击鼠标键以生成线。两点之间的动态线条,点击,移动鼠标,然后点击
我在这里看到各种问题,但大多数处理拿着鼠标按钮和拖动鼠标。
我的问题是,如何使用上述方法动态地绘制一条线。我很担心重新粉刷。我有更早的代码,并且在移动鼠标时画出了所有的行。有没有办法只是预览。
您需要创建一个实现MouseEventListener
和MouseMotionListener
的应用程序。使用MouseEventListener
方法mouseClicked
来检查鼠标是否已被点击,并且随后用方法MouseMoved
将线条的另一端更新为鼠标的位置。最后再次使用MouseEventListener
来查明线路的最终位置。
我希望这会有所帮助。
看一看: http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html和http://docs.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html。
您的帖子中缺少大量信息,因此很难提供确切的解决方案,但以下是一般想法。假设你需要一个透明的JComponent来接收鼠标事件并绘制线条预览,代码看起来就像这样。
public class MyLinePreviewComponent extends JComponent {
Point sourcePoint;
Point destinationPoint;
pubic MyLinePreviewComponent() {
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (sourcePoint == null)
sourcePoint = e.getPoint();
else
sourcePoint = null;
repaint();
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
if (sourcePoint != null)
targetPoint = e.getPoint();
repaint();
}
});
}
public void paintComponent(Graphics g) {
if (sourcePoint != null && destinationPoint != null) {
g.setColor(Color.red);
g.drawLine(sourcePoint.x, sourcePoint.y, destinationPoint.x, destinationPoint.y);
}
}
}
请注意,我没有运行此代码。
如果该行预览功能已经被添加到现有组件,那么你将不得不重新绘制中的paintComponent)的常规内容(之前paiting行。
你试过吗?你有没有示例代码来建议?我们真的太想念你了。你在画什么? “线条预览”背后是否还有其他内容? – jwatkins
'..但大多数处理与按住鼠标按钮并拖动鼠标。 - - 为您的目的修改这些示例。代码将非常相似。 'mousePressed'会保存起点。而不是使用mouseDragged,你可以使用mouseMoved拖动预览行。然后在mouseReleased中,您将保存结束点。当然,你需要一些额外的逻辑来确保你已经有了起点。 – camickr