2011-04-26 40 views
1

确定一个JComponent的近邻我有一个使用的FlowLayout,并含有多种Jbutton将一个JPanel。这些按钮位于2维网格中(由FlowLayout组成)。 JPanel中可以调整大小,以及,当然,当它是,在网格改变按钮的位置(虽然该命令,当然,保持不变)。我希望用户能够使用键盘上的箭头键从网格中的一个按钮导航到另一个按钮。在FlowLayout中

有没有办法告诉给定的按钮,当前哪个按钮直接在它上面,哪个按钮直接在它的下面,哪些按钮直接在它的左侧和右侧?

显然,如果我使用GridLayout,这将是微不足道的,但我需要使用FlowLayout出于其他原因。

回答

2

左,右箭头键是不是一个问题。正如jzd所提到的,您只需将KeyStrokes添加到遍历键的集合中即可。

对于上/下键,您将需要创建自定义操作。您可以使用当前组件的位置。然后上去,你可以更改Y协调的说10个像素(500个像素组件之间的差距排在时脉额外5)。然后您可以使用:

Container.getComponentAt(Point p) 

在该新位置查找组件。

下去,你将与按钮的位置上启动,然后在按钮上加10个像素的高度增加。

当然,您将使用键绑定将上/下KeyStroke绑定到操作。

注:我不知道,如果你需要添加额外的5个像素找到高于或低于该组件的componen。你可能只能使用纵向差距。我只是不确定边界检查如何在getComponentAt()方法上工作。