簡體   English   中英

如何使用屬性進行自定義事件?

[英]How can i make custom event with property?

如何通過從SceneBuilder / FXML訪問自定義事件和自定義屬性? 應該像這樣可用

這個消息來源給出了答案,但這里只有一部分

我需要類似的東西:

MyFragment.fxml

<SplitPane ......>
    <fx:script>
        function myFunction()
        {
            if(MyCustomControl.state){
                id0.setText('1111111')
            } else {
                id0.setText('2222222')
            }
        }
    </fx:script>
                           //How create this property? 
   <Label fx:id="id0" />   //           |              
                           //           V              
   <MyCustomControl        onMyCustomEvent="myFunction()"/>
</SplitPane>

對於Kotlin:

val MY_CUSTOM_EVENT =
    EventType<Event>(Event.ANY, "MY_CUSTOM_EVENT" + UUID.randomUUID().toString())
var onOnlineClick = object : SimpleObjectProperty<EventHandler<Event>>() {
    override fun getBean(): Any {
        return this
    }

    override fun getName(): String {
        return "onMyCustomEvent"
    }

    override fun invalidated() {
        setEventHandler(MY_CUSTOM_EVENT, get())
    }
}

fun onMyCustomEvent(): ObjectPropertyBase<EventHandler<Event>> {
    return onMyCustomEvent
}

fun setOnMyCustomEvent(value: EventHandler<Event>) {
    onMyCustomEvent.set(value)
}

fun getOnMyCustomEvent(): EventHandler<Event> {
    return onMyCustomEvent.get()
}

某處物業

fun myProperty(): BooleanProperty {
    return myCustomProperty ?: run {
        myCustomProperty = object : SimpleBooleanProperty(false) {
            override fun invalidated() {
                fireEvent(Event(MY_CUSTOM_EVENT)) // <---this
            }

            override fun getBean(): Any {
                return this
            }

            override fun getName(): String {
                return "myProperty"
            }
        }
        return myCustomProperty as SimpleBooleanProperty
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM