2012-06-09 31 views

回答

0

在矩形,我们具有

布尔含有(双X,双Y)

--- Tests if a specified coordinate is inside the boundary of this Rectangle2D. 

布尔含有(双X,双Y,双瓦特,双H)

--- Tests if the interior of this Rectangle2D entirely contains the specified set of rectangular coordinates. 

因此,不可能检查我的知识距离...

1

示例代码等?

即使如此,你要做到以下几点: 除非即时通讯错误的。

伪代码:

rectA = outside, rectB = inside 
if rectB.left - rectA.left < x then distance is ok else do something 
if rectB.top - rectA.top < y then distance is ok else do something 

等等等等

1

如果矩形是正交的,我假设你已经叫contains(Rectangle rect)。然后你只需要做一些额外的比较:

inside.x - outside.x >= LEFT_BORDER && 
outside.x + outside.width - inside.x - inside.width >= RIGHT_BORDER && 
inside.y - outside.y >= TOP_BORDER && 
outside.y + outside.height - inside.y - inside.height >= BOTTOM_BORDER 

LEFT_BORDERRIGHT_BORDERTOP_BORDERBOTTOM_BORDER是你定义。

+0

如何计算值leftBorder,rightBorder等,我看不出有任何的API这里面rectnagle类 – user613114

+0

@ user613114:你用任何你想要的值来定义它们。 – nhahtdh

2

您可以使用contains(Rectancle r)方法两次:首先检查内部矩形是否在外部矩形内部,然后将内部矩形临时放大到每个方向阈值的一半并再次进行相同检查。这一次它不应该在外部矩形内。所以基本上是这样的:

//Rectangle outer; // Do some proper setup for these two 
//Rectangle inner; 
int limit = 50; 
boolean containsWithinLimits = outer.contains(inner); 
inner.setLocation(inner.getX()-limit/2, inner.getY()-limit/2); 
inner.setSize(inner.getWidth()+limit, inner.getHeight()+limit); 
boolean containsWithinLimits = containsWithinLimits && !outer.contains(inner); 
// Now reset the bounds: 
inner.setLocation(inner.getX()+limit/2, inner.getY()+limit/2); 
inner.setSize(inner.getWidth()-limit, inner.getHeight()-limit); 
+0

Xes它解决了这个问题。谢谢。但我工作的主要问题并未解决。而且我为此创建了一个单独的线程。 [http://stackoverflow.com/questions/10959703/swing-jxmapviewer-focus-on-a-object-and-set-corresponding-zoom-level]。如果你们都有这方面的专业知识,你可以帮助我。 – user613114

+0

为什么社区wiki? – Tharwen

+0

@Tharwen错误。 :/ – ZeroOne