贴一点关键代码: //这个例子中将鼠标响应区定义为一个Rectangle2D区,每一条线对一个这样的区域。 private class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent event) { // add a new square if the cursor isn't inside a square current = find(event.getPoint());//根据鼠标坐标搜寻点击发生在那个图形对象上。 if (current == null) add(event.getPoint()); } } public Rectangle2D find(Point2D p) { for (int i = 0; i < squares.size(); i++) { Rectangle2D r = (Rectangle2D)squares.get(i);//从squares列表中遍历每个已存在图形对象 if (r.contains(p)) return r;//坐标点p是否处于响应区域r内,是则返回查找到的对象。 } return null; }
if (e.target.toString() = "你的对象")
{}
}
class MyLine {
private static final Vector lineVector = new Vector();
public MyLine() {
....
lineVector.addElement(this);
.....
}
private boolean contains(Point p) {
...
}
public static MyLine getLine(Point p) {
for(int i=0,count=lineVector.size();i<count;i++) {
MyLine line = (MyLine)lineVector.elementAt(i);
if( line.contains(p) )
return line;
}
return null;
}
}
没做验证,不过这个结构还可以用。
class MyLine {
// 保存所有生成的实例的Vector
private static final Vector lineVector = new Vector();
public MyLine() {
....
// 每生成一个实例,都把它放到Vector中。
lineVector.addElement(this); .....
} // 判断是否点击的点,在这条直线上
private boolean contains(Point p) {
...
} // 检索所有的MyLine实例。
public static MyLine getLine(Point p) {
for(int i=0,count=lineVector.size();i<count;i++) {
MyLine line = (MyLine)lineVector.elementAt(i);
if( line.contains(p) )
return line;
}
return null;
}
}
private boolean contains(Point p) {
...
}
这个方法里面怎么写?哪里得到鼠标的监听?
//这个例子中将鼠标响应区定义为一个Rectangle2D区,每一条线对一个这样的区域。 private class MouseHandler extends MouseAdapter
{
public void mousePressed(MouseEvent event)
{
// add a new square if the cursor isn't inside a square
current = find(event.getPoint());//根据鼠标坐标搜寻点击发生在那个图形对象上。
if (current == null)
add(event.getPoint());
}
} public Rectangle2D find(Point2D p)
{
for (int i = 0; i < squares.size(); i++)
{
Rectangle2D r = (Rectangle2D)squares.get(i);//从squares列表中遍历每个已存在图形对象
if (r.contains(p)) return r;//坐标点p是否处于响应区域r内,是则返回查找到的对象。
}
return null;
}
谢谢!