I have a borderpane with toggleButton. And depending on the status of toggleButton under it, I need to have either ClientForm: Fragment () or ServerForm: Fragment (). How to delete after adding these 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))
}
}
These Fragments:
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()
}
}
There is removeWhen()
extension function that takes ObservableValue<Boolean>
.
The use is the following:
label(" Display flag is false ") {
removeWhen(displayFlag)
}
label(" Display flag is true") {
removeWhen(!displayFlag)
}
There are also visibleWhen()
and hiddenWhen()
extension functions in case you need just to hide your fragments.