【问题标题】:SWT Combo Listener getText() not updatedSWT 组合侦听器 getText() 未更新
【发布时间】:2014-08-20 23:52:54
【问题描述】:

各位 SWT 程序员,您好,

今天我想在我的自定义 SWT 组合视图中添加一个侦听器。 (稍作修改)代码:

combo.addListener(SWT.ALL, new Listener() {

  @Override
  public void handleEvent(Event event) {
       //some irrelevant code
       String text = combo.getText();
       System.out.println(text);
}

但是,当我在文本字段中输入内容时,会输出触发事件之前组合视图中的文本,这意味着 combo.getText() 返回它在触发事件之前包含的文本。

如何解决此问题并在此侦听器中获取更新的 Combo 文本输入? 我不能使用 ModifyListener,它必须是 Listener 接口(因为我需要区分事件类型并相应地做一些事情)。

提前致谢,

论坛发帖人

【问题讨论】:

    标签: java swt


    【解决方案1】:

    SWT.ALL 不是 addListener 的有效值。碰巧它会被解释为SWT.KeyDown

    使用SWT.Modify 监听修改事件:

    combo.addListener(SWT.Modify, new Listener() {
    

    【讨论】:

    • 正如我所提到的,我需要一个能够同时监听所有事件的监听器。
    • 除了为每个单独的事件类型添加一个侦听器之外,没有其他方法可以侦听所有事件。
    • 好的,谢谢您的回答。最后一个问题:由于某种原因,ModifyListener 在默认侦听器之前被调用。但是,在执行 ModifyListener 之前,我需要在 Listener 中进行一些计算。有没有办法定义监听器层次结构/优先级?
    • 监听器按添加顺序调用。 addModifyListener 在内部转换为 addListener(SWT.Modify,因此这两个方法在同一个列表中。
    • 非常感谢!接受这个:)
    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2018-01-21
    • 2012-03-19
    • 2018-04-06
    • 2013-03-09
    • 2012-12-19
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多