【问题标题】:TextField selectAll works half the timeTextField selectAll 工作时间有一半
【发布时间】:2011-12-16 15:29:26
【问题描述】:

我正在使用 Vaadin,并且在表单中有一组文本字段。 textfields 有 focusListeners 触发一个方法,如果有的话,它会聚焦 texfield 中的所有文本。

但我的问题是自动选择实际上只有一半的时间有效。如果我在文本字段中粘贴一些文本,在文本字段外部单击,然后在其中单击文本将被选中。但是,如果我再次点击外部,然后在文本字段中,文本将在几分之一秒内被选中,然后只有我在文本中点击过的输入标记。

代码如下:

class FormTextField extends FormLayout  {

        private static final long serialVersionUID = -2738069810605965508L;

        String caption;
        final STextField textField = Cf.formTextField(caption, "", 22);

        public FormTextField(String textField)  {

            addStyleName("panelform");
            setWidth(formWidth, UNITS_EM);

            this.textField.setCaption(textField);
            this.textField.setImmediate(true);

            this.textField.addListener(new FieldEvents.FocusListener() {

                @Override
                public void focus(FocusEvent event) {
                    textFieldSelectAll();
                }
            });


            addComponent(this.textField);

        }

        private void textFieldSelectAll()   {
            this.textField.selectAll();
        }

        public STextField getTextField()    {

            return textField;

        }
    }
}

我很想知道你们中是否有人熟悉这个问题并能够解决它?

如果您想了解我的更多信息,请询问!

【问题讨论】:

  • 您还有其他听众可能会妨碍您吗?
  • @Marthin 在代码 sn-p 所在的类中没有其他侦听器。然而,持有这个类的几个实例的类也有其他 Button.ClickLister 的。

标签: java listener textfield vaadin


【解决方案1】:

我认为您也需要立即声明您的 FormTextField/STextField。

希望这会有所帮助。

【讨论】:

  • 我检查了,TextField 已经设置为立即。并且删除该设置不会以任何方式改变行为。但是,我发现每次单击文本外的文本字段时,选择都有效。我认为像以前一样单击文本实际上会触发删除选择并将标记放置在我单击的位置的事件。不知道我是否可以以任何方式覆盖它,可能它是由浏览器指示的。但无论如何感谢您的帮助! =)
猜你喜欢
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多