首页 > 解决方案 > 如何删除边框上添加的 Fragment ()?

问题描述

我有一个带切换按钮的边框。并且根据它下面的toggleButton的状态,我需要有ClientForm:Fragment()或ServerForm:Fragment()。添加这些Fragment()后如何删除?

override val root = borderpane {
        top {
            setPrefSize(250.0, 100.0)
            paddingAll = 10.0
            useMaxHeight = true
            useMaxWidth = true
            togglebutton("Выбрать режим клиента") {
                useMaxWidth = true
                action {
                    text = if (isSelected) "Выбрать режим сервера" else "Выбрать режим клиента"
                    if (isSelected) {
                        // REMOVE ServerForm: Fragment from borderpane.center
                        // ADD ClientForm: Fragment() to borderpane.center
                    } else {
                        // REMOVE ClientForm: Fragment from borderpane.center
                        // ADD ServerForm: Fragment() to borderpane.center
                    }
                }
            }
        }
        center {
            add(find(ServerForm::class))
        }
    }

这些片段:

class ClientForm: Fragment() {
    override val root = form {
        fieldset(labelPosition = Orientation.VERTICAL) {
            fieldset("IP") {
                textfield(ip).required()
            }
            fieldset("PORT") {
                textfield(port).required()
            }
            button("Connect") {
            }
        }
        label() {
        }
    }
}

class ServerForm: Fragment() {
    override val root = form {
        fieldset(labelPosition = Orientation.VERTICAL) {
            fieldset("PORT") {
                textfield(port).required()
            }
            button("Start server") {

            }
        }
        label()
    }
}

标签: user-interfacekotlintornadofx

解决方案


removeWhen()扩展功能需要ObservableValue<Boolean>. 用途如下:

label(" Display flag is false ") {
    removeWhen(displayFlag)
}
label(" Display flag is true") {
    removeWhen(!displayFlag)
}

如果您只需要隐藏片段,还有扩展visibleWhen()功能。hiddenWhen()


推荐阅读