我一直在看 Java2D 教程,想知道如何使用鼠标绘制形状来定义其大小(即形状的大小不固定)。我还没有遇到专门针对此的教程,并且想知道如何为矩形实现此功能。
问问题
86 次
3 回答
1
基本上,大小在每一刻都是固定的。当您添加 aMouseMotionListener
时,在捕获下一个事件之前,您可以在屏幕上绘制形状,其大小取决于当前MouseEvent.getPoint()
,它告诉您鼠标位置的坐标。
覆盖paintComponent(Graphics g)
组件的方法。repaint()
并在每次更新鼠标位置和形状大小后调用方法:
class YourPanel extends JPanel extends MouseMotionListener, MouseListener {
private Rectangle rect = new Rectangle();
public YourPanel () {
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.draw(rect);
}
@Override
public void mouseDragged (MouseEvent me) {
rect.setSize(me.getX() - rect.x, me.getY() - rect.y);
repaint();
}
@Override
public void mousePressed (MouseEvent me) {
rect.setLocation(me.getX(), me.getY());
repaint();
}
// Other methods...
}
于 2013-01-21T18:39:14.227 回答
0
Shapes 是一个 word 和 java 类,表示不同的几何图形,如矩形、椭圆、折线等。
所以首先用户必须决定哪种形状,例如折线。
然后,您将捕获鼠标左键单击事件,并为每次单击读取鼠标坐标并将该坐标对(例如 java.awt.geom.Point2D())添加到ArrayList<Point2D>
. 这种列表的大小(实际上)是无限的。
在每次单击时,您将创建一个将被绘制的当前形状对象。一旦用户单击鼠标右键,形状就准备好了,您将其存储在形状列表中。
于 2013-01-21T18:32:08.223 回答
0
您应该让您的类实现鼠标侦听器,然后使用 getX 和 getY 保存鼠标侦听器的变量以绘制形状。
于 2013-01-21T18:42:46.210 回答