我想在根视图中为侦听器创建一个单独的方法,但它会抛出 NPE
I wanted to make a separate method for listeners in the root view but it throws NPE
我有一个 borderpane
作为根视图,它变得有点大所以我想把它们分成小块......用 View
s 没问题,我可以很容易地分开他们进入文件和 类。
我遇到的问题是,当我想为 root
视图的侦听器创建一个单独的方法时,它会抛出 NPE。
这是我的原始代码:
override val root = borderpane {
addClass(rootStyle)
paddingAll = 10.0
// listeners
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
// end listeners
center {...}
}
}
这是我当前抛出 NPE 的代码:
override val root = borderpane {
addClass(rootStyle)
paddingAll = 10.0
setListeners() // I added this
center {...}
}
}
private fun setListeners(){
with(root) {
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
}
}
我在没有 with(root)
的情况下尝试过,但 IDE 将它们突出显示为错误。
我还尝试调用 onBeforeShow()
中的方法,它没有抛出任何异常,但侦听器没有工作。
处理这个问题的正确方法是什么?在 Android 中,我很容易制作 setListeners()
方法并从 onCreate()
中调用它。在 TornadoFX 中,什么是最佳等价物?
已编辑:
我找到了一个有效的代码,但我仍然不确定它是否是最佳方法...如果您有更好的方法来处理此类情况,请随时添加您的答案。
哇哦,就在我眼皮子底下。我将 this
(borderpane
) 传递给一个方法,它按预期工作。
override val root = borderpane{
setListeners(this)
}
private fun setListeners(borderPane: BorderPane) {
with(borderPane) {
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
}
}
我有一个 borderpane
作为根视图,它变得有点大所以我想把它们分成小块......用 View
s 没问题,我可以很容易地分开他们进入文件和 类。
我遇到的问题是,当我想为 root
视图的侦听器创建一个单独的方法时,它会抛出 NPE。
这是我的原始代码:
override val root = borderpane {
addClass(rootStyle)
paddingAll = 10.0
// listeners
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
// end listeners
center {...}
}
}
这是我当前抛出 NPE 的代码:
override val root = borderpane {
addClass(rootStyle)
paddingAll = 10.0
setListeners() // I added this
center {...}
}
}
private fun setListeners(){
with(root) {
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
}
}
我在没有 with(root)
的情况下尝试过,但 IDE 将它们突出显示为错误。
我还尝试调用 onBeforeShow()
中的方法,它没有抛出任何异常,但侦听器没有工作。
处理这个问题的正确方法是什么?在 Android 中,我很容易制作 setListeners()
方法并从 onCreate()
中调用它。在 TornadoFX 中,什么是最佳等价物?
已编辑: 我找到了一个有效的代码,但我仍然不确定它是否是最佳方法...如果您有更好的方法来处理此类情况,请随时添加您的答案。
哇哦,就在我眼皮子底下。我将 this
(borderpane
) 传递给一个方法,它按预期工作。
override val root = borderpane{
setListeners(this)
}
private fun setListeners(borderPane: BorderPane) {
with(borderPane) {
setOnMouseEntered { scaleUp() }
setOnMouseExited { scaleDown() }
}
}