В моем коде есть NPE, когда я хочу удалить последний элемент в моем списке. Я пытаюсь использовать TornadoFX и шаблон ItemViewModel.
Но я не знаю, как избежать этого NPE в моем коде. Это происходит только тогда, когда я использую Spinner (у меня нет проблем с другим виджетом ...)
package lemon
import javafx.beans.property.SimpleIntegerProperty
import javafx.scene.control.TableView
import tornadofx.*
class Smtg(int: Int = 15) {
val someIntegerProperty = SimpleIntegerProperty(int)
var someInteger by someIntegerProperty
}
class SmtgItemViewModel : ItemViewModel<Smtg>() {
val someInteger = bind(Smtg::someIntegerProperty)
}
class MyView : View() {
val someList = listOf(Smtg(20)).asObservable()
val model = SmtgItemViewModel()
var tableView by singleAssign<TableView<Smtg>>()
override val root = borderpane {
left {
tableView = tableview(someList) {
column("Value", Smtg::someIntegerProperty)
bindSelected(model)
}
}
center {
form {
fieldset {
field("Spinner") {
spinner(min = 0, max = 120, amountToStepBy = 5, property = model.someInteger)
}
}
fieldset("Actions") {
field {
button("Commit").action { model.commit() }
button("Rollback").action { model.rollback() }
button("Remove").action { someList.remove(tableView.selectedItem) }
}
}
}
}
}
}
class TestApp : App(MyView::class)
fun main() {
launch<TestApp>()
}
Как мне избежать этого NPE, пожалуйста?
Спасибо!