gpt4 book ai didi

javafx - 关注容器中的下一个项目

转载 作者:行者123 更新时间:2023-12-02 07:18:52 25 4
gpt4 key购买 nike

有没有一种方法可以以编程方式聚焦于容器中的下一个可聚焦节点,而不直接调用特定组件的requestFocus()方法?此功能类似于按选项卡按钮在组件之间遍历焦点,其中 disabled节点被跳过。

最佳答案

没有公共(public)方法可以实现此目的。 只有黑客和解决方法。

您可以使用节点的

impl_traverse(Direction.NEXT);

方法。但这个已被弃用,可以随时删除,并且您的代码会因新的 java 版本而中断。

或者,您可以捕获 Enter 键并触发 Tab 键事件。但这同样丑陋。

或者,如果您在文本字段中,您可以这样做:

if( textfield.getSkin() instanceof BehaviorSkinBase) {
((BehaviorSkinBase) textfield.getSkin()).getBehavior().traverseNext();
}

但这也是不鼓励的,因为它不是 api。

即使您使用反射来访问场景的遍历方法,如下所示:

Method[] allMethods = scene.getClass().getDeclaredMethods();
for (Method m : allMethods) {
String mname = m.getName();
if (mname.startsWith("traverse")) {
m.setAccessible(true);
m.invoke(scene, new Object[] { textfield, Direction.NEXT });
}
}

您最终必须提供一个 Direction 参数,这也是不鼓励的。

你能做的最好的事情就是 comment and vote on this issue

关于javafx - 关注容器中的下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29984025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com