user-interface - 如何删除边框上添加的 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()
}
}
解决方案
有removeWhen()
扩展功能需要ObservableValue<Boolean>
. 用途如下:
label(" Display flag is false ") {
removeWhen(displayFlag)
}
label(" Display flag is true") {
removeWhen(!displayFlag)
}
如果您只需要隐藏片段,还有扩展visibleWhen()
功能。hiddenWhen()
推荐阅读
- vue.js - 如何使用 Vuejs 进行正确的分页?设置器未定义错误
- java - Java 在同一文件夹中使用外部 jar 从命令行编译和运行
- javascript - 如何使用把手#each 调用带有对象数组的对象?
- javascript - 等待获取响应以在 for 循环中继续。Javascript Nodejs
- c# - 来自 Guid 的有效 string.Intern
- c - #ifdef 在#define 中?
- python - 如何使用python创建一个excel阅读循环
- selenium - 如何用硒阻止弹出窗口?
- matplotlib - Matplotlib 图例未对齐
- migrate - npm run migrate 询问密码