将焦点从一个组件转移到另一个组件

发布于 2024-12-26 12:57:53 字数 77 浏览 2 评论 0原文

当我(程序)遇到某种情况时,如何将焦点从一个组件转移到另一个组件?就像当第一个文本字段中的单词长度达到 3 时,焦点会转移到下一个文本字段。

How can I shift focus from one component to another component when I (program) experience's' a certain case ? Like the focus shifts to the next text-field when in the first text field the word length reaches 3.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风吹过旳痕迹 2025-01-02 12:57:53
  1. 订阅第一个组件上的 keyDown 事件。

  2. 如果文本长度== 3将焦点转移到另一个组件。 请不要忘记撤消当前按键的效果

  3. 我猜可以使用 focus()requestFocusInWindow() 方法。不记得确切的名称。

同样,可以订阅TextChanged事件。因此,添加了 ASA 3 个字符,使用步骤 3 转移焦点。

  1. Subscribe to keyDown event on 1st component.

  2. if text length == 3 shift focus to another component. don't forget to undo the effect of current key down

  3. I guess focus() OR requestFocusInWindow() method can be used. don't remember exact name.

Similarly, TextChanged event can be subscribed. so, ASA 3 chars are added, shift the focus using step 3.

波浪屿的海角声 2025-01-02 12:57:53

你可以这样做:

if(jTextField1.getText().length() == 2 ){ // if the req. length is 3
        // shift the focus to next text field
        jTextField2.requestFocusInWindow();
    }

You can do like this :

if(jTextField1.getText().length() == 2 ){ // if the req. length is 3
        // shift the focus to next text field
        jTextField2.requestFocusInWindow();
    }
把人绕傻吧 2025-01-02 12:57:53

这个效果很好..

 Component currentFocusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
                            FocusEvent focusLostEvent = new FocusEvent(currentFocusOwner, 1005, true, destinationComponent);
                            FocusEvent focusGainEvent = new FocusEvent(destinationComponent, 1004, true, currentFocusOwner);                        
                            try
                            {
                                currentFocusOwner.dispatchEvent(focusLostEvent);
                                destinationComponent.dispatchEvent(focusGainEvent);
                            }
                            catch(Exception e)
                            {
                                Logger.logExceptionMessage(e);
                            }

This works well..

 Component currentFocusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
                            FocusEvent focusLostEvent = new FocusEvent(currentFocusOwner, 1005, true, destinationComponent);
                            FocusEvent focusGainEvent = new FocusEvent(destinationComponent, 1004, true, currentFocusOwner);                        
                            try
                            {
                                currentFocusOwner.dispatchEvent(focusLostEvent);
                                destinationComponent.dispatchEvent(focusGainEvent);
                            }
                            catch(Exception e)
                            {
                                Logger.logExceptionMessage(e);
                            }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文