Связывание между Spinner и ItemViewModel ошибка при запуске и при удалении элементов - PullRequest
0 голосов
/ 19 октября 2019

В моем коде есть 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, пожалуйста?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...