我如何使用 属性 创建自定义事件?
How can i make custom event with property?
如何制作自定义事件和自定义 属性
从 SceneBuilder/FXML 访问它?
Should be available like this
这个来源给出了答案,但只给出了部分答案here
我需要这样的东西:
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
}
}
如何制作自定义事件和自定义 属性 从 SceneBuilder/FXML 访问它? Should be available like this
这个来源给出了答案,但只给出了部分答案here
我需要这样的东西:
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
}
}