Руководство от TornadoFX: как реализовать класс Customer - PullRequest
0 голосов
/ 26 ноября 2018

Отсюда я следую Руководству по TornadoFX, пытаясь запустить пример мастера: Мастер

и реализовал дополнительный класс Customer следующим образом, который не работает:

package com.example.demo.app

import javafx.beans.property.SimpleIntegerProperty
import javafx.beans.property.SimpleObjectProperty
import javafx.beans.property.SimpleStringProperty
import java.time.LocalDate
import java.time.Period
import tornadofx.*

class Customer(name: String, zip: Int, city: String, type: String) {
    val zipProperty = SimpleIntegerProperty(zip)
    var zip by zipProperty

    val nameProperty = SimpleStringProperty(name)
    var name by nameProperty

    val cityProperty = SimpleStringProperty(city)
    var city by cityProperty

    val typeProperty = SimpleStringProperty(type)
    var type by typeProperty

}

Как я могу добавить Customer.Type, как указано здесь, эти классы взяты из Руководства:

package com.example.demo.view

import com.example.demo.app.Customer
import com.example.demo.app.CustomerModel
import tornadofx.*
class CustomerWizard : Wizard() {
    val customer: CustomerModel by inject()

    override val canGoNext = currentPageComplete
    override val canFinish = allPagesComplete

    init {
        add(BasicData::class)
        add(AddressInput::class)
    }
}

class BasicData : View("Basic Data") {
    val customer: CustomerModel by inject()

    override val complete = customer.valid(customer.name)

    override val root = form {
        fieldset(title) {
            field("Type") {
                combobox(customer.type, Customer.Type.values().toList()) //Customer.Type, what is it?
            }
            field("Name") {
                textfield(customer.name).required()
            }
        }
    }
}

class AddressInput : View("Address") {
    val customer: CustomerModel by inject()

    override val complete = customer.valid(customer.zip, customer.city)

    override val root = form {
        fieldset(title) {
            field("Zip/City") {
                textfield(customer.zip) {
                    prefColumnCount = 5
                    required()
                }
                textfield(customer.city).required()
            }
        }
    }
}

Ошибка заключается в следующем, заставляя меня задуматься, что такое Type?Enum, Class, ...?Error:(26, 50) Kotlin: Unresolved reference: Type

1 Ответ

0 голосов
/ 26 ноября 2018

В приведенном выше примере Type - это перечисление, определенное внутри класса Customer, например, например:

class Customer(name: String, zip: Int, city: String, type: Customer.Type) {
    enum class Type {
        Private, Company
    }

    val zipProperty = SimpleIntegerProperty(zip)
    var zip by zipProperty

    val nameProperty = SimpleStringProperty(name)
    var name by nameProperty

    val cityProperty = SimpleStringProperty(city)
    var city by cityProperty

    val typeProperty = SimpleObjectProperty<Type>(type)
    var type by typeProperty

}

Обратите внимание, что typeProperty также было изменено на SimpleObjectProperty<Type>.

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