2011-03-27 18 views
2

Swing如何確定當按下標籤時哪個組件要更改焦點?它是否與聲明組件的順序有關?創建?添加?他們在屏幕上的絕對位置?或者根本沒有可靠的模式?Swing如何確定在按Tab時哪個組件需要關注?

+2

看看焦點子系統上的這個鏈接:[如何使用焦點子系統](http://download.oracle.com/javase/tutorial/uiswing/misc/focus.html) – 2011-03-27 20:49:32

+1

@Hovercraft:post as answer ?我會贊成。 – 2011-03-27 20:52:03

+0

謝謝,但我並不真正關心最高票數。請留下您的答案。 – 2011-03-27 21:07:38

回答

2

啊,我收回我的評論。從氣墊船的鏈接(我的重點):

焦點遍歷策略決定了一組組件的導航順序。 Swing提供LayoutFocusTraversalPolicy類,它根據佈局管理器相關因子(例如組件的大小,位置和方向)決定導航的順序在焦點週期內,組件可以前進或後退方向導航。

我昨晚在看書時一定錯過了。

氣墊船,如果你發佈這樣的答案,我會刪除這個並接受你的。

3

AWT(或Swing)FocusManager使用FocusTraversalPolicy來確定下一個焦點是哪個組件。

我認爲默認的FocusTraversalPolicy與外觀相關,但是在我觀察它的地方,它是一個ContainerOrderFocusTraversalPolicy(它只是通過它們在父級中的索引來排序組件)還是一個LayoutFocusTraversalPolicy。

最後提到的這個類通過它們的位置對容器的組件進行了一些排序,粗略地將它們排成一行並逐行遍歷它們,並且從左到右(或者從右到左在RTL-locales )。這在使用GridLayout,GridBagLayout,GroupLayout等基於網格的佈局管理器時效果最佳。

相關問題