代码之家  ›  专栏  ›  技术社区  ›  Leder

TornadoFX指南:如何实现客户类

  •  1
  • Leder  · 技术社区  · 7 年前

    我将从这里开始遵循TornadoFX指南,尝试运行示例向导: Wizard

    并实现了附加类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()
                }
            }
        }
    }
    

    错误如下,让我想知道是什么类型的?枚举,类。。。? Error:(26, 50) Kotlin: Unresolved reference: Type

    1 回复  |  直到 7 年前
        1
  •  1
  •   Edvin Syse    7 年前

    在上面的例子中, 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>