2011-04-26 53 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()方法上工作。