首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fantom Combo小部件似乎会在构造时触发修改事件。

Fantom Combo小部件似乎会在构造时触发修改事件。
EN

Stack Overflow用户
提问于 2017-07-19 02:54:27
回答 1查看 47关注 0票数 2

我写了这门课

代码语言:javascript
复制
using gfx
using fwt

class Test {

    Window window := Window {
        size = Size( 400, 320 )
        SashPane {
            Combo {
                items = Month.vals
                onModify.add( |e| { echo( "items.size is ${e->widget->items->size}" ) } )
            },
        },
    }

    Void main() {
        window.open
    }
}

当我运行它时,它会产生以下输出:

代码语言:javascript
复制
items.size is 12
items.size is 12

这意味着修改事件被触发了两次。同时,窗口在屏幕上弹出,而我没有任何机会修改Combo小部件上的任何内容。为什么?

这会在使用多个Combo小部件的实际类中引发问题,其中一些与此相关,并导致一连串的事件产生意想不到的结果。

请问有什么办法可以防止这种情况发生吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 09:04:21

我可以证实这是个问题。

FWT Combo的Java源代码来看,它非常小,而且似乎没有做错任何事情,这使我相信这是SWT Combo Widget的一个问题。

这对你一点帮助都没有,所以我很快就找到了这个例子.

打开窗口并构造小部件之后,...add onModify事件侦听器。通过使用Window.onOpen()事件来做到这一点:

代码语言:javascript
复制
using gfx
using fwt

class Testy {
    Void main() {
        Window {
            size = Size( 400, 320 )
            combo := null as Combo
            onOpen.add {
                combo.onModify.add { echo("Hello Mum!") }
            }
            SashPane {
                combo = Combo { items = Month.vals },
            },
        }.open
    }
}

现在,只有当组合体实际被修改时才会得到一个Hello Mum!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45180167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档