【问题标题】:gwt tabindex inside dialogbox对话框内的gwt tabindex
【发布时间】:2011-04-08 23:20:57
【问题描述】:

在我的 gwt 应用程序中,在某些屏幕上,我创建了一个带有输入表单的对话框。我希望能够使用 tabindex 属性,但只能在该对话框中使用。 (即:仅循环该对话框的第一个到最后一个字段)现在如果我在选择最后一个字段时按 Tab,焦点将移到第一个选项卡索引上,该索引恰好是对话框后面的项目(设置为玻璃)。这很烦人,因为现在必须多次按标签,直到焦点返回到第一个对话框字段。将对话框设置为模态会更糟糕,一旦您在对话框外使用 tab,tab 键就会被忽略,因为对话框外的对象不再接收键盘事件(不能 tab out!)。 我唯一的选择是收听 Tab 键并手动处理 Tab 键吗?只要它返回到我的对话框而不必遍历它下面的所有元素,我就可以在我的应用程序之外和到 url 栏(例如)上进行选项卡。

【问题讨论】:

    标签: gwt popup tabindex dialog


    【解决方案1】:

    好吧,迟到总比没有好!我有同样的问题。解决方案其实很简单。

    假设您有一个继承自Composite 并包含数据输入和按钮小部件的对话框。主窗口还包含一些 UI 小部件,例如输入字段和一些按钮。您为此主窗口设置了 Tab 键顺序。当按下按钮以调出对话框时,设置主窗口 (setTabIndex(-1)) 上的每个控件,以禁用 Tab 键顺序。

    对于新建的对话框,在构造函数中注册如下代码:

    this.addAttachHandler( new AttachEvent.Handler() {
        @Override
        public void onAttachOrDetach(AttachEvent event) {
            if(isAttached()) {
                setTabOrder();
            } else {
                clearTabOrder();
            }               
        }
    });
    

    然后创建两个方法setTabOrder()clearTabOrder() 被适当地调用。似乎 GWT 与具有标签顺序的多个窗口混淆了。您可以通过在显示/隐藏每个对话框窗口时动态创建 Tab 键顺序来结束混乱。

    【讨论】:

    • 看起来是个不错的解决方案;我也准备写一个弹出式数据输入表单,刚刚开始考虑tabindex。 @Rob Mitchell:动态创建跳位顺序到底是什么意思?
    【解决方案2】:

    好吧,在将近一个月没有答案之后,我决定手动处理 Tab 键。 像魅力一样工作,但它现在忽略了标签循环中的 url 栏(我很好)。 我使用这篇博文开始: http://albertattard.blogspot.com/2009/11/capturing-tab-key-in-gwt-textarea.html 我只是在对话框的根部添加了一个焦点面板。

    【讨论】:

    • :你能详细说明你做了什么吗?我遇到了和你上面一样的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多