如何在Swing Java中设置Tab顺序?

15

我想知道如何调整Swing界面中的选项卡顺序。我找到了一个示例,它显示这个方法应该可以解决问题,但它似乎已经弃用且不起作用。

getCombox("cmbFrom").setNextFocusableComponent(getCombox("cmbTo"));

注意:以下方法返回一个名为Argument的Combox对象。如果有人知道如何在Netbeans IDE中实现此功能,那就太棒了。我已经找到了在Eclipse WindowBuilder中实现它的方法,但在Netbeans IDE中却没有。谢谢。

getCombox(String s)
2个回答

18

1
最好链接到最新版本的JavaDocs。我已经编辑了你的答案,指向J2SE 7。关于获取最新文档链接的提示,请参见优点的第二点 - Andrew Thompson
4
支持FTP(焦点遍历策略),但最好不要从FocusTraversalPolicy开始,因为有太多可能出错的地方。最好从任何具体实现(例如SortingFocusTraversalPolicy)开始,并根据需要进行覆盖(例如插入自定义比较器)。 - kleopatra
FYI,刚刚查看了教程http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html#customFocusTraversal - 这一章节仍然像一开始那样糟糕。为了看到过于天真的实现的不当行为,请将textField tf4替换为可编辑的comboBox... - kleopatra
如何防止组件保持焦点?如果我将 setFocusCycleRoot() 设置为 true,用户将无法从容器中退出(除非使用 Ctrl+Tab,这不是用户所期望的)。虽然 getComponentAfter() 在最后一个焦点子元素上返回 true,但焦点会移动到第一个焦点子元素,反之亦然。 - Dávid Horváth

8

如果您正在使用 NetBeans,选择您想成为第一个聚焦元素的组件,并在属性中确保勾选了 focusCycleRoot。然后,在 nextFocusableComponent 中选择您希望按 Tab 键时获得焦点的下一个组件,并以同样的方式继续处理其他组件。

注意:不要为其他组件勾选 focusCycleRooot。


1
啊哈哈哈,我尝试过了,但没有焦点循环根,谢谢jafaritaqi。 - gumuruh
不需要使用 focusCycleRoot 即可正常工作。 - Ravindra Gullapalli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接